swift - 您如何在 Swift 3 中记录函数闭包参数的参数?

标签 swift xcode markup

在 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")
}

然后快速帮助看起来像这样:

foo(bar:) Quick Help

我想知道允许我写一些文本来替换“无描述”的语法是什么。非常感谢!

最佳答案

据我所知,如果你标记它们,你只能记录闭包参数:

/// 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)。

关于swift - 您如何在 Swift 3 中记录函数闭包参数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38669725/

相关文章:

list - 规范列表的 HTML5 标记

ios - 如何在 UICollectionView 之上呈现 UIViewController?

ios - 如何使用 Swift 从 iOS 上传图像到 Ruby/Rails 服务器

cocoa - 使用 NSPredicateEditor 强制显示复合行

syntax - 如何检查 YML 语法是否正确(gitlab.yml)

Javascript 异常(仅发生在 PC 上的 FireFox 4.01 中)

ios - 无法从 iBeacon 获得稳定的读数

swift - 使用 UITextField 时奇怪的卡住

ios - 更改模拟矩阵会破坏 xcode 中的布局

ios - Nuance Vocalizer 演示应用程序无法为 64 位模拟器设备构建