@autoclosure 做的事情就是把一句表达式自动地封装成一个闭包 (closure)。这样我们用的时候,就可以像传参数一样传递一个表达式。
在没有使用@autoclosure
的时候我们这样写
func compareNumbers(_ predicate: () -> Bool) {
if predicate() {
print("true")
}
}
compareNumbers {
1 < 2
}
在这种表达式比较简单的时候我更喜欢用@autoclosure
func compareNumbersAutoClosure( _ predicate: @autoclosure () -> Bool) {
if predicate() {
print("true")
}
}
compareNumbersAutoClosure(1 < 2)
注意:
@autoclosure 并不支持带有输入参数的写法,也就是说只有形如 () -> T 的参数才能使用这个特性进行简化。