Curring(柯里化)
把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并返回结果的新方法。
在Swift2中可以将方法进行Curring 但是在Swift4不再支持方法的柯里化
@autoclosure
func logIfTrue(predicate: () -> Bool) { if predicate() {
print("true")
}
}
调用方式1
logIfTrue(predicate: {2 > 1})
调用方式2
logIfTrue{2 > 1}原来的闭包的书写方式如上面所写,但是看起来不是很容易理解,这时就出现了自动闭包。
swift4 中的自动闭包书写和 swift2中不同 区别点在@autoclosure的位置,swift2中是在参数之前,在 swift4中是在参数之后。
func logIfTrue(predicate:@autoclosure () -> Bool) { if predicate() {
print("true")
}
}
logIfTrue(predicate: 2 > 1)另外需要注意@autoclosure 并不支持带有输入参数的写法,只有形如()-> T 的参数才能使用这个特性进行简化。
Designated、Convenience 和Required
只有在子类重写了父类的 designated 方法的时候才可以直接调用父类的 convenience 方法
如果添加 required 关键字修饰初始化方法,则在子类中必须对该 required 方法进行实现。这样做的好处就是可以保证依赖于某个 designated 方法的 convenience 一直可以被使用。
Swift 中的Array,Dictionary和Set在集合中只能存储同一个类型的元素,但是NSArray可以存储多种不同类型的数据,如果想要Array 存储不同类型的数据,可以使用Any AnyObject
let store:[Any] = [1,"1"]
Swifter4
Copyright © 2015 Powered by MWeb, Theme used GitHub CSS.