web-dev-qa-db-ja.com

関数のクロージャーパラメーターのパラメーターをSwift 3でどのように文書化しますか?

Xcode 8ベータ版および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

「説明なし」に代わるテキストを作成できる構文を知りたいです。どうもありがとう!

56

私が知る限り、クロージャーパラメーターにラベルを付ける場合にのみドキュメント化できます。

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

これは理想的とは言えません。クロージャを呼び出すときに引数ラベルを使用する必要があり、名前の競合がある場合は、2つを区別する方法がないようです。

Edit:@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 を参照)。

68
Tim Vermeulen