web-dev-qa-db-fra.com

Comment documentez-vous les paramètres du paramètre de fermeture d'une fonction dans Swift 3?

Dans Xcode 8 beta et Swift 3, lorsque vous avez une méthode qui prend une fermeture comme paramètre, par exemple:

func foo(bar: (String) -> Void) {
    bar("Hello, world")
}

Comment documentez-vous les paramètres de la fermeture? Par exemple, si j'ai écrit ceci:

/// Calls bar with "Hello, world"
/// - parameter bar: A closure to call
func foo(bar: (String) -> Void) {
    bar("Hello, world")
}

Ensuite, l'aide rapide ressemble à ceci:

foo(bar:) Quick Help

Je voudrais savoir quelle est la syntaxe qui me permettra d'écrire du texte pour remplacer "Pas de description". Merci beaucoup!

56
Søren Mortensen

Pour autant que je sache, vous ne pouvez documenter les paramètres de fermeture que si vous les étiquetez:

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

C'est loin d'être idéal: cela vous oblige à utiliser une étiquette d'argument lorsque vous appelez la fermeture, et s'il y a des conflits de dénomination, il ne semble pas possible de faire la distinction entre les deux.

Edit : Comme l'a souligné @Arnaud, vous pouvez utiliser _ pour éviter d'avoir à utiliser l'étiquette de paramètre lors de l'appel de la fermeture:

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

En fait, c'est la seule approche valable dans Swift 3 car les étiquettes de paramètres ne font plus partie du système de type (voir SE-0111 ).

68
Tim Vermeulen