La syntaxe du Bloc de Swift
Je suis en train de réécrire l'Objective-C, Swift, je ne peux pas travailler sur la syntaxe ou de comprendre les docs
Voici un exemple simplifié en Objective-C, j'ai écrit:
[UIView animateWithDuration:10.0 animations:^{self.navigationController.toolbar.frame = CGRectMake(0,10,0,10);}];
Comment puis-je écrire Swift?
C'est le modèle de saisie semi-automatique donne:
UIView.animateWithDuration(duration: NSTimeInterval, animations: (() -> Void))
OriginalL'auteur Ryan Heitner | 2014-06-04
Vous devez vous connecter pour publier un commentaire.
Étant donné que l'argument, les types et le type de retour de la animations argument sont connus, le compilateur peut en déduire sans problème. Cela devrait fonctionner (mais je n'ai pas l'aire de jeux disponibles pour le moment:
pour plus d'informations sur les fermetures de voir le le chapitre de la swift docs
remarque à propos de
CGRect()
- le développeur docs montrerCGRect()
d'être utilisés dans le code swift. Peut-être qu'il nécessite une importation?mise à jour pour les commentaires: vous pouvez également utiliser une fuite de la fermeture de la sorte:
Les arguments nommés ne sont pas un problème. Il doit être le dernier argument, c'est tout.
Est-ce juste moi ou est la fuite des fermetures beaucoup plus confus? Personne ne sait ce que la langue a été influencée par ou pourquoi cela fait sens?
Est-ce pour permettre au curry opérations? Semble comme un obtus façon de le faire...
Il permet les rappels à lire", comme le contrôle de flux"
OriginalL'auteur Jiaaro
C'est le swift fermeture format:
C'est ce que vous devez faire:
Ici est la la documentation pour des fermetures.
OriginalL'auteur 67cherries
Code suivant peut guide pour l'écriture de votre propre bloc.
et vous pouvez l'appeler comme -
OriginalL'auteur Prakash Raj
Vous pouvez l'écrire dans les 3 la même façon:
écrire quoi faire droit à la fermeture/bloc de code:
Ceci est également connu comme de fuite fermeture ( Vous pouvez seulement de fuite de fermeture si la fermeture paramètre est le dernier paramètre)
Cela ne signifie pas que le paramètre "animations" n'est plus écrit. Il est écrit, mais tout comme dans le format ci-dessus.
Écrire exactement à l'intérieur des lignes, la plupart des développeurs d'éviter de telles, parce que c'est un peu buggé à écrire avec toutes les parenthèses et accolades.
(Contrairement à la fuite de fermeture que vous avez écrit le nom de ie "animations")
Ceci est connu comme inline fermeture
Écrire dans un plus modulaire sens
Rappeler le type du paramètre "animations" a été
() -> Void
Exactement comme ce que nous faisons, animatingFunc ne prend pas de paramètres ie '()' et ne renvoie rien savoir "vide"
(Swift, les fonctions sont des types et peuvent être passés en paramètres)
Certains pourraient dire que c'est plus lisible certains pourraient dire de fuite de fermeture...
Note de côté1
Vous pouvez aussi ne rien faire ( ce qui n'a vraiment pas de bon sens, mais dans de nombreux autres gestionnaires/animations/d'achèvement de gestionnaires, vous ne voulez pas faire quelque chose)
Note de côté2
Fermetures devient plus intéressant lorsque vous avez à capture une valeur. Voir cette simple démonstration.
Pour plus d'informations à propos de Swift fermetures de voir La Documentation d'Apple
OriginalL'auteur Honey