Dart は == と === をサポートしていますか? 平等とアイデンティティの違いは何ですか?
16895 次
4 に答える
53
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
とおりであることに注意してください。
a
またはのいずれかである場合b
はnull
、戻りますidentical(a, b)
- それ以外の場合は、戻る
a.==(b)
identical(a, b)
2 つの変数が同じインスタンスを参照しているかどうかを確認するために使用します。同一は、 にあるトップレベルの関数dart:core
です。
于 2012-11-07T18:03:35.023 に答える
4
DART は === が存在する JavaScript に関連していると言われているため、すぐに反対票を投じられないようにしたいと思います。
概念としての同一性とは、1 が 1 に等しいことを意味しますが、 1.0は 1 に等しくなく、false も 0 にも等しくなく、"2" も 2 に等しくはなりません。
于 2012-11-07T18:10:38.290 に答える
3
identical
Dart ではJavascript と同様に機能する(5.0 == 5)
ことtrue
に注意してidentical(5.0, 5)
くださいfalse
。
于 2012-11-07T19:03:04.520 に答える