关于swift的一些属性总结

guard let x = x where x > 0 else {
        // 变量不符合条件判断时,执行下面代码
        return
    }
使用guard语句将上述的3个问题一并解决:
  1. 是对你所指望的条件作检查,而非不符合你指望的。又是和assert很类似。若是条件不符合,guard的else语句就运行,从而退出这个函数。
  2. 若是经过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 - 这个例子中该范围是fooGuard函数内部。这是一个很重要,却有点奇怪的特性,但让guard语句十分实用。
  3. 对你所不指望的状况早作检查,使得你写的函数更易读,更易维护。(1)

 反向遍历就是直接在enumerated()函数后调用reversed()函数。 swift (2)swift

extension 相似oc的扩展,可是指这个类的扩展,可让代码逻辑更好控制,也为往后重构代码打下了良好的基础(3)闭包

访问权限则依次为:open,public,internal,fileprivate,private。fileprivate这个元素的访问权限为文件内私有(4)函数

 private lazy var xxx:xxx{ return:} 至关于oc中的懒加载(5)spa

if #available(iOS 11.0, *) {code

            return view.safeAreaInsetsci

        } else {io

            return .zerotable

        }基础

swift和oc中都同样,判断系统是不是iOS11 (6)变量

willSet是在设置新值以前调用,willSet观察器会将新的值做为参数传入,默认参数名为newValue。didSet是设置新值后当即调用,观察期会将旧的值做为参数传入,默认参数为oldValue。
须要注意的是在属性初始化的时候不会调用willSet 和 didSet方法。若是在didSet 为属性赋值,这个值会替换原来观察器以前设置的值。(7)

Swift 自动对行内闭包提供简写实际参数名,你也能够经过 $0 , $1 , $2 等名字来引用闭包的实际参数值。

若是你在闭包表达式中使用这些简写实际参数名,那么你能够在闭包的实际参数列表中忽略对其的定义,而且简写实际参数名的数字和类型将会从指望的函数类型中推断出来。 in  关键字也能被省略,由于闭包表达式彻底由它的函数体组成:

1

2

3

4

5

6

7

let numbers = [3,2,4,1,5,7,6];

var sortedNumbers = numbers.sorted(by:{$0 < $1});

print(sortedNumbers);//输出为:[1, 2, 3, 4, 5, 6, 7]

 

sortedNumbers = numbers.sorted(by:{$1 < $0});

print(sortedNumbers);//输出为:[7, 6, 5, 4, 3, 2, 1]

 能够看出,能够用$0、$一、$2来表示调用闭包中参数,$0指代第一个参数,$1指代第二个参数,$2指代第三个参数,以此类推$n+1指代第n个参数,$后的数字表明参数的位置,一一对应。

相关文章
相关标签/搜索