Ro.bber

Road endless its long and far, I will seek up and down.


  • 首页

  • 标签

  • 归档

  • 分类

  • 关于

  • 搜索

Swift Tips - 结构体(Struct) & 类(Class)

发表于 2018-12-29 | 分类于 swift
| 字数统计 1.6k

事实上,结构体 & 类 我们并不是很陌生,在我们各种熟悉语言中均是存在,比如,C、C++、OC等。

前面我们已经知道 Swift 将 枚举 着实丰富了很多,具体可以参见这篇文章。

而对于 结构体 , Swift 也是对其宠爱有加。

有句话是这么说的来着:Swift 中,能用 结构体 就不要用 类 ,除非需要 类 的那些特有的特性。

那么, Swift 中怎么定义 结构体 跟 类 呢?

阅读全文 »

Swift Tips - 枚举(Enumerations)

发表于 2018-12-19 | 分类于 swift
| 字数统计 1.5k

何谓枚举(Enumerations)?

通常来说,枚举是为一组有限种可能性的相关值提供的通用类型。

在 C/C++/Objective C 中,这种 通用集合 被限定为一组整型常数。

而 Swift 却将它真正的发扬了光大,灵活且强大:

  • 通用集合 不再被限定为一组整型的常数,它一个字符,或是一串字符,或是浮点数,甚至无需必须指定一个值,因为这个值(官方称为 原始值「raw value」 )可能并不需要。
  • 在上面的基础上,枚举甚至可以指定一种关系,或者叫关联(官方称为 关联值「associated value」)。
  • 你可曾有一种枚举叫做 递归枚举(Recursive Enumerations) ?!
  • 传统意义上仅有类支持的一些特性,枚举将能够同样实现,比如:计算属性用来提供关于枚举当前值的额外信息;实例方法提供与枚举表示值相关的功能;定义初始化器来初始化成员值;而且能够遵循协议来提供标准功能等等。(后面文章会详细说明这块儿)
阅读全文 »

Swift Tips - 高阶函数(map & flatMap & filter & reduce)

发表于 2018-12-04 | 分类于 swift
| 字数统计 1.1k

官方提供的高阶函数,不仅可以大大的简化我们的代码,而且一般来讲会比传统(我们自己实现)的实现更好更快。PS:可能是我自己能力不足,哈哈~

可能有过这样的苦恼:费劲巴拉的终于实现了,猛然发现官方原本提供了现成的方法,而且比自己实现的更好。

内心仿佛一万只草泥马飘过。。。

总之,你用或者不用,它们就在那里!

今天主要介绍一下 swift 提供的几个高阶函数 —— map & flatMap & filter & reduce 。

阅读全文 »

Swift Tips - Defer关键字

发表于 2018-12-04 | 分类于 swift
| 字数统计 1.4k

前面有说到,在 swift 2.0 引入了 guard 关键字,可以让代码编写更流畅。它的优雅简洁而功能强大确实给了我们极大的方便。具体可以参见 这里 。

而,跟 guard 一同引入的还有一个关键字 —— defer 。

defer

一句话总结 defer 就是:让执行推迟。

阅读全文 »

Swift Tips - 简单实用的特殊标记(MAKE & TODO & FIXME)

发表于 2018-12-03 | 分类于 swift
| 字数统计 360

通常我们在代码编写过程中,为了更好的理解,亦或是为了其他的目的,而希望可以通过简单的方式,迅速的完成标记。

在我们熟悉的 OC 中我们有两种标记方式:

其中一种是 #pragram mark - xxx 方式。

阅读全文 »

Swift Tips - if let/var & guard let/var 全解析

发表于 2018-11-30 | 分类于 swift
| 字数统计 853

问题引出:

swift 神奇的引入了一个类型——可选类型(optionals)。

但是,我们要是按照以往(比如OC)的套路在使用可选类型定义的常量的时候,又会让你崩溃抓狂。

因为 swift 是类型安全的语言,所以可选类型的常量在 if 判断之后仍然需要 解包(!) 。如下:

1
2
3
4
5
6
let name: String? = "老王"
let age: Int? = 10
if name != nil && age != nil {
print(name! + String(age!)) // 输出:老王10
}

倘若,你不加上 ! ,根本就不会让你编译通过,而,加上呢?又会如此的麻烦。难道优雅的 swift 就没有解决办法吗?

阅读全文 »

Swift Tips - 访问控制(private & fileprivate & internal & public & open)

发表于 2018-11-29 | 分类于 swift
| 字数统计 380

在 Swift 语言中,访问修饰符有五种,分别为 private,fileprivate,internal,public 和 open。

其中 fileprivate 和 open 是 Swift 3 新添加的。由于过去 Swift 对于访问权限的控制,不是基于类的,而是基于文件的。这样会有问题,所以 Swift 3 新增了两个修饰符对原来的 private、public 进行细分。

阅读全文 »

Swift Tips - as、as!、as?三种类型转换操作符区别

发表于 2018-11-27 | 分类于 swift
| 字数统计 389

这里整理总结下 as、as!、as? 这三种类型转换操作符的异同,以及各自的使用场景。

as使用场合

  • 从派生类转换为基类,向上转型(upcasts)
1
2
3
4
5
6
7
class Animal {}
class Cat: Animal {}
let cat = Cat()
let animal = cat as Animal
  • 消除二义性,数值类型转换
1
2
3
4
let num1 = 42 as CGFloat
let num2 = 42 as Int
let num3 = 42.5 as Int
let num4 = (42 / 2) as Double
阅读全文 »

grep命令常用参数

发表于 2018-09-26 | 分类于 随笔
| 字数统计 266

-A num, --after-context=num - 打印出找到的匹配行后num行。这个跟-B,-C类似功能,主要用于查看上下文。

-B num, --before-context=num - 打印出找到的匹配行前num行。

-C[num, --context=num] - 打印出找到的匹配行前后num行,相当于-A num -B num。

阅读全文 »

git clone --depth=1之后拉取其他分支

发表于 2018-09-25 | 分类于 随笔
| 字数统计 129

当项目过大时,git clone会出现超时失败,这时候我们可以只拉去最新的一次或者几次commit:

1
git clone --depth=1 xxxxxx

有时候,我们总是图一时之快,而忽略了其他的问题。

阅读全文 »
12…5
Ro.bber

Ro.bber

路漫漫其修远兮,吾将上下而求索。
Road endless its long and far,
I will seek up and down.

42 文章
4 分类
59 标签
RSS
GitHub 简书
© 2017 - 2018 Ro.bber Ro.bber's Blog 全站共35.6k字
本站访客数 人 本站总访问量 人次