Dart基础5-操作符

dart大部分操作符与java是相同的,值得注意的是

  1. is/is!判断是否是类的子类(相当于java的instanceof
  2. as类型转换

1 级联操作符

级联操作符 .. : 允许您在同一个对象上创建一个操作序列

我们肯定见过建造者模式的这种使用方式

Computer comp = new Computer.ComputerBuilder(
                "500 GB", "2 GB").setBluetoothEnabled(true)
                .setGraphicsCardEnabled(true).build();

其实级联就和这个一样,但可以更简洁些,同时支持嵌套

final addressBook = (AddressBookBuilder()  //使用对象
      ..name = 'jenny'                     //即AddressBookBuilder().name = 'jenny'
      ..email = '[email protected]'
      ..phone = (PhoneNumberBuilder()
            ..number = '415-555-0100'
            ..label = 'home')              //最好用()括起来,方便区分
          .build())
    .build();

2 操作符

//3元运算符 bool ? A : B
var b = 1 == 1 ? 2 : 3;   //int类不会自动转为bool类
//空判断赋值    A ?? B  为null则将A 值赋为B,否则仍为A
b ??= 1;
//空判断    A?.a    如果A类为null,则返回null,否则返回A中的a 
var a = A();
a?.printMe();

3 操作符重载

operator 可重载的操作符列表:

< + | []
> / ^ []=
<= ~/ & ~
>= * << ==
- % >>

如果重写==,需要重写ObjecthashCodegetter

class Vector {
  num x, y;
  Vector(this.x, this.y);
  operator +(Vector other) => new Vector(x + other.x, y + other.y);
}

你可能感兴趣的:(Dart基础5-操作符)