web-dev-qa-db-fra.com

Swift `dans` la signification du mot clé?

J'essaie d'implémenter du code de parse.com et je remarque un mot clé in après le vide.

Je suis perplexe qu'est-ce que c'est? La deuxième ligne, vous voyez le Void in

PFUser.logInWithUsernameInBackground("myname", password:"mypass") {
  (user: PFUser?, error: NSError?) -> Void in
  if user != nil {
    // Do stuff after successful login.
  } else {
    // The login failed. Check error to see why.
  }
}

Les documents ne documentent pas cela. Je sais que le mot clé in est utilisé dans les boucles for.

Quelqu'un confirme?

41
Martin

Dans une fonction nommée, nous déclarons les paramètres et retournons le type dans la ligne de déclaration func.

func say(s:String)->() {
    // body
}

Dans une fonction anonyme, il n'y a pas de ligne de déclaration func - c'est anonyme! Nous le faisons donc avec une ligne in au début du corps à la place.

{
    (s:String)->() in
    // body
}

(C'est la forme complète d'une fonction anonyme. Mais alors Swift a une série de règles permettant le type de retour, les types de paramètres, et même les noms de paramètres et toute la ligne in à supprimer dans certaines circonstances.)

67
matt

*

Le début du corps de la fermeture est introduit par le mot clé in. Ce mot clé indique que la définition des paramètres de fermeture et du type de retour est terminée et que le corps de la fermeture est sur le point de commencer.

*

Source: https://developer.Apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html

3
Tony

La syntaxe d'expression de fermeture a la forme générale suivante:

Closure Expression Syntax

2
Artem Zaytsev