Dart lambda/shortland function confusion

后端 未结 3 1698
时光取名叫无心
时光取名叫无心 2020-12-30 18:32

I\'m still pretty new to Dart and the syntax of => (fat arrow) still confuses me (I come from C# background).

So in C# fat arrow ( => ) says: goes to so for

3条回答
  •  渐次进展
    2020-12-30 19:18

    You need to choose either block syntax or single expression syntax, but not both.

    You can't combine => with {}

    Your two options are as follows using your example:

    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")
    );
    

    or

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

    In both cases, it is just a way to express an anonymous function.

    Normally if you want to just run a single expression, you use the => syntax for cleaner and more to the point code. Example:

    someFunction.then( (String str) => print(str) );
    

    or you can use a block syntax with curly braces to do more work, or a single expression.

    someFunction.then( (String str) {
      str = str + "Hello World";
      print(str);
    });
    

    but you can't combine them since then you are making 2 function creation syntaxes and it breaks.

    Hope this helps.

提交回复
热议问题