DART是否支持==和=?平等和身份的区别是什么?

推荐答案

Dart支持==表示平等,identical(a, b)表示身份.Dart不再支持===语法.

如果要判断对象是否"相等",请使用==表示相等.您可以在类中实现==方法来定义相等的含义.例如:

class Person {
  String ssn;
  String name;

  Person(this.ssn, this.name);

  // Define that two persons are equal if their SSNs are equal
  bool operator ==(other) {
    return (other is Person && other.ssn == ssn);
  }
}

main() {
  var bob =  Person('111', 'Bob');
  var robert =  Person('111', 'Robert');

  print(bob == robert); // true

  print(identical(bob, robert)); // false, because these are two different instances
}

请注意,a == b的语义是:

  • 如果abnull,则返回identical(a, b)
  • 否则,返回a.==(b)

使用identical(a, b)判断两个变量是否引用同一实例.identicaldart:core中的顶级函数.

Dart相关问答推荐

为什么 Dart 的编译器认为代码可能为空,而代码保证它不能为空?

flutter.io (dart) - 将填充设置为设备宽度的百分比?

如何在flutter中管理switch小部件的原生外观

Flutter - MultiProvider 如何与相同类型的提供者一起工作?

Flutter/Dart:子类化冻结的数据类

Flutter:是否可以有多个 Futurebuilder 或一个 Futurebuilder 用于多个 Future 方法?

如何go 除字符串中的变音符号?

如何签署 Flutter 的应用程序

Flutter:如何检测键盘按键?

摆动中的可滚动导轨

谷歌dart Regions?

如何判断两张 map 的省道是否相等

如何在Dart中switch 枚举?

Dart/Flutter 中的=>(箭头)是什么意思?

Dart Nodejs 和 Socketio

Dart 是否有断点语句?

dart 是否支持运算符重载

Dart 中 == 和 === 有什么区别?

判断 datetime 变量是今天、明天还是昨天

你如何在 Dart 中打印美元符号 $