在Xcode 8 beta和Swift 3中,当你有一个以闭包为参数的方法时,例如:
func foo(bar: (String) -> Void) {
bar("Hello, world")
}
如何记录闭包所需的参数?例如,如果我写了这个:
/// Calls bar with "Hello, world"
/// - parameter bar: A closure to call
func foo(bar: (String) -> Void) {
bar("Hello, world")
}
然后快速帮助看起来像这样:
我想知道什么语法可以让我写一些文字来取代“没有描述”。非常感谢!
答案 0 :(得分:65)
据我所知,如果你标记它们,你只能记录闭包参数:
/// Calls bar with "Hello, world"
/// - parameter bar: A closure to call
/// - parameter theString: A string to use
func foo(bar: (theString: String) -> Void) {
bar(theString: "Hello, world")
}
这不太理想:它会强制您在调用闭包时使用参数标签,如果存在命名冲突,则似乎无法区分这两者。
编辑:正如@Arnaud指出的那样,您可以使用_
来防止在调用闭包时使用参数标签:
/// Calls bar with "Hello, world"
/// - parameter bar: A closure to call
/// - parameter theString: A string to use
func foo(bar: (_ theString: String) -> Void) {
bar("Hello, world")
}
实际上,这是Swift 3中唯一有效的方法,因为参数标签不再是类型系统的一部分(参见SE-0111)。
答案 1 :(得分:3)