美文网首页
Dart的一些语法糖(持续更新)

Dart的一些语法糖(持续更新)

作者: CodingMann丶许半仙 | 来源:发表于2019-12-31 09:53 被阅读0次

    语法糖 ?. 与 ??

    • dart 语法糖 ?.
    dart 语法糖 ?.
    
    它的意思是左边如果为空返回 null,否则返回右边的值。
    
    A?.B
    如果 A 等于 null,那么 A?.B 为 null
    如果 A 不等于 null,那么 A?.B 等价于 A.B
    
    void main() {
      Animal animal = new Animal('cat');
      Animal empty = null;
      
      //animal 非空,返回 animal.name 的值 cat
      print(animal?.name);
      //empty 为空,返回 null
      print(empty?.name);
      
      //animal 非空,可以直接访问 animal.name 的值 cat
      print(animal.name);
      //empty 为空,抛出异常
      print(empty.name);
    }
    
    class Animal {
      final String name;
      Animal(this.name);
    }
    
    运行后会看到如下输出:
    cat
    null
    cat
    Uncaught exception:
    Cannot read property 'get$name' of null
    
    • dart 语法糖 ??
    dart 语法糖 ??
    它的意思是左边如果为空返回右边的值,否则不处理。
    
    A??B
    如果 A 等于 null,那么 A??B 为 B
    如果 A 不等于 null,那么 A??B 为 A
    
    以上面为例子,假设我们上面要求当 empty 为空时,默认值输出 unknown。
    那么可以修改如下:
    //empty 为空,返回 null
    print(empty?.name);
    改为:
    //empty 为空,本来要返回 null,由于有 ??,返回 unknown
    print(empty?.name??'unknown')
    
    
    b ??= 'hello';
    如果b为null的情况下,b等于hello。如果不为null则不作任何操作
    

    相关文章

      网友评论

          本文标题:Dart的一些语法糖(持续更新)

          本文链接:https://www.haomeiwen.com/subject/kufboctx.html