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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容