Swift @autoclosure

@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 的参数才能使用这个特性进行简化。

你可能感兴趣的:(Swift @autoclosure)