Set*_*add 34
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 = new Person('111', 'Bob');
var robert = new Person('111', 'Robert');
print(bob == robert); // true
print(identical(bob, robert)); // false, because these are two different instances
}
Run Code Online (Sandbox Code Playgroud)
注意语义a == b是:
a或者b是null,回报identical(a, b)a.==(b)使用identical(a, b)检查,如果两个变量引用相同的实例.相同的是一个顶级功能dart:core.
应该注意的是,identical在 dart 中使用该函数有一些注意事项,正如此 github 问题评论中提到的:
该规范已更新,以处理双打之间的相同情况,如下所示:
Sametime() 函数是预定义的 dart 函数,当且仅当它的两个参数为以下任意一个时,该函数返回 true:
- 同一个物体。
- 类型为 int 且具有相同的数值。
- 属于 double 类型,不是 NaN,并且具有相同的数值。
这意味着,即使dart 中的所有内容都是一个对象,并且f和g是不同的对象,以下打印true.
int f = 99;
int g = 99;
print(identical(f, g));
Run Code Online (Sandbox Code Playgroud)
因为整数的值相同,而不是引用。
因此,为了回答您的问题,==用于确定两个对象是否具有相同的值,但identical用于测试引用相等性,除了上面摘录所确定的double和 的情况之外。int
请参阅:相等和关系运算符
| 归档时间: |
|
| 查看次数: |
5858 次 |
| 最近记录: |