首页 文章

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

提问于
浏览
11

Dart支持==和===吗?平等和身份有什么区别?

3 回答

  • 1

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

    如果要检查对象是否为"equal",请使用 == 进行相等性 . 您可以在类中实现 == 方法来定义相等意味着什么 . 例如:

    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
    }
    

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

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

    • 否则,返回 a.==(b)

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

  • 2

    应该注意的是,在Dart中, identical 的工作方式类似于Javascript,其中 (5.0 == 5)true ,但 identical(5.0, 5)false .

  • 20

    由于DART被认为与javascript相关,但是===存在,我希望不会很快被投票 .

    身份作为一个概念意味着1等于1,但1.0不等于1,false也不等于0,"2"也不等于2,即使每个人相互评估并且1 == 1.0返回true .

相关问题