在Dart中使用is-operator和运行时类型有什么区别

诺曼

我在dart代码实验室中研究了可迭代对象,偶然发现了以下代码片段:

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时。它确实可以炸毁您编译的应用程序大小。

我将在该代码实验室上发布一个问题!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在类型定义中使用泛型时,Dart会引发运行时异常

使用冒号和as语法声明类型有什么区别?

Object和{}类型有什么区别,何时使用

在Flutter / Dart中,在条件if语句中使用“ ==”与“ is”有什么区别

原始类型,无界通配符和泛型中使用Object之间有什么区别

在类设置器中使用强制转换和类型验证之间有什么区别?

在函数参数类型中使用普通 {} 和 typing.Dict 有什么区别?

Dart 中的“is”和“==”有什么区别?

Dart 语法:如何在 dart 中使用类型列表 <T>?

dart中使用的Timeline.dart是什么?

在Slick中使用DatabaseConfig和Database有什么区别?

在SQL中使用In和join有什么区别?

在JavaScript中使用keyup和keydown有什么区别?

在Django中使用TemplateView和ListView有什么区别?

在MIPS中使用NOP和停顿有什么区别

在 Typescript 中使用 `:Interface` 和 `as Interface` 有什么区别?

在Kotlin中使用@Annotation和[Annotation]有什么区别?

在“if”语句中使用时,“in”和“is”有什么区别?

在 Dart 的“forEach”和“for”中使用 async/await

使用“ is”检查Dart泛型的运行时类型

使用JQuery运行AJAX和使用纯XMLHttpRequest运行AJAX有什么区别?

使用echo; >和>>有什么区别

在 C++ 中使用 std::make_shared 的“类型擦除”代码中的类和结构有什么区别?

Google Colab中的本地运行时和托管运行时有什么区别?

为什么在Dart的列表定义中使用if和for?

使用 Linq 进行运行时排序和类型

为什么相似的代码具有不同的运行时和内存使用率?

使用类型= MPI的“ doParallel”软件包和直接使用doMPI有什么区别?

与使用打字和npm安装类型定义文件有什么区别?