【问题标题】:What is @autoclosure in Swift [duplicate]Swift 中的 @autoclosure 是什么 [重复]
【发布时间】:2018-05-17 13:02:08
【问题描述】:

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

Swift 4.1,Xcode 9.4

我进行了大量搜索,试图找出 Swift 中的 @autoclosure 是什么,但我空手而归。谁能告诉我它是什么,它做什么,为什么/什么时候需要/应该使用它?


更新

@autoclosure 属性的使用是获取函数的输入,否则该函数需要使用闭包来输入参数,以允许将该输入与任何大括号一起作为正常输入之一参数。

示例(感谢@Avi):

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

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

注意:@autoclosure属性的存在允许在print(5) 周围没有花括号案例。

【问题讨论】:

  • 该文档有一个完整的部分专门用于autoclosures,所以我真的不觉得你说你做了相当多的研究是合理的。其他地方也有大量关于自动关闭装置的材料,所以如果你不得不问这样一个关于它们的一般性问题,那只能意味着你并没有真正研究过它们。
  • 有没有人知道一个全面的地方,在那里我可以了解 Swift 的所有鲜为人知的(至少对我而言)属性?

标签: swift attributes closures keyword


【解决方案1】:

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

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

doSomething(print(5))

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

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多