代码之家  ›  专栏  ›  技术社区  ›  Noah Wilder

Swift[副本]中的@autoclosure是什么

  •  -2
  • Noah Wilder  · 技术社区  · 6 年前

    什么是 @autoclosure &如何使用?

    Swift 4.1,Xcode 9.4

    我做了大量的搜索,试图找出 @自动关闭 在斯威夫特,我空手而来。有人能告诉我它是什么,它做什么,为什么/何时/需要/应该使用它吗?


    使现代化

    使用 @自动关闭 属性是获取一个函数的输入,否则需要使用闭包来输入一个参数,以允许将该输入作为正常参数之一输入到任何花括号中。

    示例(贷记至 @Avi ):

    func doSomething(_ something: @autoclosure () -> ()) {
        something()
    }
    
    doSomething(print(5)) 
    // Prints "5"
    

    注: 存在 @自动关闭 属性允许周围没有花括号 print(5) 在这种情况下。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Avi    6 年前

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

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

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