Dart lambda/shortland fonction de la confusion
Je suis encore assez nouveau de Dart et la syntaxe de l' => (grosse flèche) confond encore moi (je viens de C# arrière-plan).
Donc en C# de graisse flèche ( => ) dit: va à ainsi, par exemple:
Action<string> action1 = (str) => { System.Diagnostic.Debug.WriteLine("Parameter received: " + str.ToString()); }
action1("Some parameter");
signifie: quel que soit l'envoyer en tant que paramètre à action1
(si elle pourrait être castée pour string
) va à intérieure champ d'application (dans notre cas il simplement imprimés dans Debug.WriteLine()
mais dans Dart il est quelque chose de différent.... (?)
par exemple dans Future.then
ClassWithFutures myClass = new ClassWithFutures();
myClass.loadedFuture.then(
(str) => { print("Class was loaded with info: $str"),
onErrro: (exp) => { print("Error occurred in class loading. Error is: $exp"); }
);
Dart éditeur de m'avertir que le premier et le deuxième print
est: Expected string literal for map entry key
. Je pense en C# façon que str
il juste le nom du paramètre qui sera rempli par les internes de rappel que Future.then
utilise pour appeler onValue
ou onError
Ce que je fais mal ?
OriginalL'auteur Jasper | 2013-04-04
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour choisir le bloc ou la syntaxe de l'expression unique de la syntaxe, mais pas les deux.
Vous ne pouvez pas combiner => {}
Vos deux options sont comme suit à l'aide de votre exemple:
ou
Dans les deux cas, c'est juste une façon d'exprimer une fonction anonyme.
Normalement, si vous voulez juste une expression unique, vous utilisez l' => syntaxe pour plus propres et plus le code de point. Exemple:
ou vous pouvez utiliser un bloc de syntaxe avec des accolades pour faire plus de travail, ou une seule expression.
mais vous ne pouvez pas combiner eux, car alors, vous faites 2 la fonction de création de syntaxes et il se casse.
Espère que cette aide.
OriginalL'auteur Daegalus
Dans Dart
=> xxx
est juste un sucre syntaxique pour éviter{ return xxx; }
. Ainsi, les deux fonctions suivantes sont équivalentes :Vous pouvez également utiliser
=>
sur les définitions de méthode :OriginalL'auteur Alexandre Ardhuin