【问题标题】:What's the meaning of “=>” (arrow) in Dart/Flutter?Dart/Flutter 中的“=>”(箭头)是什么意思?
【发布时间】:2021-03-28 07:51:20
【问题描述】:
  [
    Provider<FirebaseAuthService>(
      create: (_) => FirebaseAuthService(),
    ),
    Provider<ImagePickerService>(
      create: (_) => ImagePickerService(),
    ),
  ],

这个语法 (=&gt;) 是什么意思?

_MyAppState createState() => _MyAppState();

【问题讨论】:

标签: flutter dart


【解决方案1】:

来自documentation

对于只包含一个表达式的函数,您可以使用 速记语法。 =&gt; expr 语法是{ return expr; } 的简写。 =&gt; 符号有时被称为 arrow 语法。

注意:箭头之间只能出现表达式而不是语句 (=>) 和分号 (;)。例如,您不能放置 if 语句 在那里,但你可以使用条件表达式。


代码示例:

如下函数:

int sum(int x, int y) {
  return x + y;
}

等同于:

int sum(int x, int y) => x + y;

【讨论】:

    【解决方案2】:

    您可能已经在 Dart 代码中看到了 =&gt; 符号。这种箭头语法是一种定义函数的方法,该函数在其右侧执行表达式并返回其值。

    • 使用粗箭头=&gt; 需要删除大括号。否则,代码编辑器会显示错误。
    • 如果函数具有返回类型,则需要使用胖箭头删除 return 关键字。

    例如,考虑对List 类的any() 方法的调用:

    bool hasEmpty = aListOfStrings.any((s) {
      return s.isEmpty;
    });
    

    这是编写该代码的一种更简单的方法:

    bool hasEmpty = aListOfStrings.any((s) => s.isEmpty);
    

    代码示例

    通过一个真实的代码示例来理解这个概念。代码执行矩形的周长和面积。这通常是在函数的帮助下完成的。

     void main() {
      findPerimeter(9, 6);
      var rectArea = findArea(10, 6);
      print('The area is $rectArea');
    }
    
    void findPerimeter(int length, int breadth) {
      var perimeter = 2 * (length * breadth);
      print('The perimeter is $perimeter');
    }
    
    int findArea(int length, int breadth) {
      return length * breadth;
    }
    

    可以借助 Dart 中的粗箭头优化给定的函数。

     void main() {
      findPerimeter(9, 6);
      var rectArea = findArea(10, 6);
      print('The area is $rectArea');
    }
    
    void findPerimeter(int length, int breadth) =>
      print('The perimeter is ${2 * (length * breadth)}');
    
    int findArea(int length, int breadth) =>
       length * breadth;
    

    点击运行按钮后,我们仍然得到相同的结果。

    The perimeter is 108
    The area is 60
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-08
      • 2019-10-23
      • 1970-01-01
      • 2014-03-16
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      相关资源
      最近更新 更多