了解Dart中的括号(颤振)

时间:2020-05-22 04:33:53

标签: dart

我对 Dart (Flutter)中的括号感到困惑。 哪个括号“(),{},[]”用于什么?

1 个答案:

答案 0 :(得分:3)

  • ()可以对表达式进行分组:

    var x = (1 + 2) * 3;
    

    或可以指定函数的参数列表:

    var getAnswer = () => 42;
    
    int square(int x) => x * x;
    

    或可以指定function calls

    var answer = getAnswer();
    var squared = square(4);
    
  • []本身创建List literals

    var list = [1, 2, 3];
    var emptyList = []; // Creates a List<dynamic>.
    

    或在对象上使用时,调用operator [],该方法通常访问集合的元素:

    var element = list[index];
    var value = map[key];
    

    或在参数列表中指定optional positional parameters

    int function(int x, [int y, int z]) {
      return x + y ?? 0 + z ?? 0;
    }
    
    function(1, 2);
    

    in dartdoc comments, creates linked references到其他符号:

    /// Creates a [Bar] from a [Foo].
    Bar fooToBar(Foo foo) {
      // ...
    }
    
  • {}可以创建代码块,将行分组在一起并限制变量范围。这包括(但不限于)函数体,类声明,if-else块,try-catch块,for块,{{ 1}}个块,while个块等:

    switch

    或本身可以创建SetMap literals

    class Class {
      int member;
    }
    
    void doNothing() {}
    
    void function(bool condition) {
      {
        int x = 'Hello world!';
        print(x);
      }
    
      if (condition) {
        int x = 42; // No name collision due to separate scopes.
        print(x);
      }
    }
    

    或在参数列表中指定optional named parameters

    var set = {1, 2, 3};
    var emptySet = <int>{};
    
    var map = {'one': 1, 'two': 2, 'three': 3};
    var emptyMap = {}; // Creates a Map<dynamic, dynamic>
    

    或创建枚举:

    int function(int x, {int y, int z}) {
      return x + y ?? 0 + z ?? 0;
    }
    
    function(1, y: 2);
    

    enum SomeEnumeration { foo, bar, baz, } 中的

    用于消除插值表达式的歧义:

    String
  • var foo = 'foo'; var foobar = '${foo}bar'; var s = '${function(1, 2)}'; 在函数或类声明中成对使用时会创建generics

    <>

    使用泛型时指定显式类型:

    class GenericClass<T> {
      T member;
    }
    
    T function<T>(T x) {
      // ...
    }