我研究了dart codelab for iterables并偶然发现了以下代码片段:
class EmailAddress {
String address;
EmailAddress(this.address);
@override
bool operator ==(Object other) =>
identical(this, other) ||
(a) other is EmailAddress &&
(b) runtimeType == other.runtimeType &&
address == other.address;
....
(a)行和(b)行有什么区别?对我来说,他们似乎也一样。
或更普遍地问:使用is-operator和使用对象的runtimeType属性检查dart中的运行时类型有什么区别?
最佳答案
aSet is Iterable
–这是true
aSet.runtimeType == Iterable
这是false
因此,is检查处理子类。
另外,我们真的建议您避免使用runtimeType
的。特别是在编译为JavaScript时。它确实可以炸毁您编译的应用程序大小。
我将在该代码实验室上发布一个问题!
关于dart - 在Dart中使用is-operator和运行时类型有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952521/