什么是Swift中的@autoclosure

时间:2018-05-17 13:02:08

标签: swift attributes closures keyword

什么是@autoclosure&它是如何使用的?

Swift 4.1,Xcode 9.4

我已经做了大量的搜索,试图找出Swift中的@autoclosure,我空手而归。任何人都可以告诉我它是什么,它做了什么,以及为什么/何时需要/应该使用它?

更新

@autoclosure属性的使用是接受一个函数的输入,否则需要使用闭包来输入参数,以允许输入用任何大括号输入正常参数。

示例(贷记给@Avi):

func doSomething(_ something: @autoclosure () -> ()) {
    something()
}

doSomething(print(5)) 
// Prints "5"

注意: @autoclosure 属性的存在允许缺少花括号 print(5)

1 个答案:

答案 0 :(得分:4)

该属性用于函数参数,该参数是闭包类型。当存在时,它允许调用者传递一个表达式,该表达式自动包装在一个闭包中并作为闭包传递给该函数。

func doSomething(_ something: @autoclosure () -> ()) {
    something()
}

doSomething(print(5))

请注意print(5)周围没有大括号。