【问题标题】:Understanding Brackets in Dart (Flutter)了解 Dart 中的括号(颤振)
【发布时间】:2020-05-22 04:33:53
【问题描述】:

我对 Dart(Flutter) 中的 Brackets 有很多困惑。 哪个括号“()、{}、[]”用于什么?

【问题讨论】:

  • 你读过Dart language tour吗?
  • 是的。但仍不清楚。
  • () - 函数,[] - 数组,{} - 对象

标签: dart


【解决方案1】:
  • ()可以对表达式进行分组:

    var x = (1 + 2) * 3;
    

    或者可以为函数指定参数列表:

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

    或者可以指定function calls:

    var answer = getAnswer();
    var squared = square(4);
    

    or 是某些关键字语法的一部分。这包括(但不限于)ifassertforwhileswitchcatch

    if (condition) {
      ...
    }
    
    assert(condition);
    
    for (var item in collection) {
      ...
    }
    
    
    while (condition) {
      ...
    }
    
    switch (value) {
      ...
    }
    
    try {
      ...
    } on Exception catch (e) {
      ...
    }
    
  • [] 自己创建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 块、while 块、switch 块等。 :

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

    或单独创建SetMap literals

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

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

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

    或创建枚举:

    enum SomeEnumeration {
      foo,
      bar,
      baz,
    }
    

    或在Strings 中用于消除插值表达式的歧义:

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

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

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

    var map = <String, int>{};
    

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2019-09-17
    • 1970-01-01
    • 2020-09-04
    • 2019-03-15
    • 1970-01-01
    • 2020-06-08
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多