Dans Swift jusqu'à Swift 3 inclus, je ne peux pas créer un tuple à élément unique où l'élément est nommé. Ainsi, func foo() -> Bar
est bien, alors que func foo() -> (bar: Bar)
produit une erreur de compilation.
Je peux cependant penser à quelques utilisations possibles de ce modèle, par ex.
func putTaskOnQueue() -> (receipt: CancellableTask)
func updateMyThing() -> (updatedSuccessfully: Bool)
...où l'étiquette est utilisée pour réduire l'ambiguïté sur ce que représente la valeur de retour.
Il est évident qu'il existe plusieurs façons de reconfigurer mes apis pour contourner cette limitation, mais je suis curieux de savoir pourquoi elle existe.
S'agit-il d'une limitation du compilateur ? Le fait d'autoriser les étiquettes d'éléments sur les 1-tuples empêcherait-il l'analyse d'une autre partie de la grammaire ? Cela a-t-il été discuté dans le cadre du système Swift Evolution ?
Pour être clair : je ne sollicite pas d'avis quant à l'exactitude des exemples ci-dessus. Je cherche des explications (si elles existent) sur les raisons pour lesquelles ce n'est pas techniquement possible.