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

标签 dart typechecking runtime-type

我研究了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 –这是trueaSet.runtimeType == Iterable这是false
因此,is检查处理子类。

另外,我们真的建议您避免使用runtimeType。特别是在编译为JavaScript时。它确实可以炸毁您编译的应用程序大小。

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

关于dart - 在Dart中使用is-operator和运行时类型有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952521/

相关文章:

java - 以编程方式确定 java 实例的编译类型

c++ - C++ 中的奇怪编译器错误(VC 编译器)

dictionary - 在 Julia 中检查复杂类型时规范不足

common-lisp - Lisp SBCL 将函数参数声明为某种类型的列表,以进行类型检查

java - 如何在泛型重载java中解析运行时类型

dart - 如何在Dart端捕获dom-repeat模板(或iron-list)的item model.index?

dart - 单击时 Flutter 扩展磁贴消失

flutter - 在flutter应用程序中,我正在使用rxdart中的doOnData如何删除它?

dart - Flutter - 键盘不会出现并且不会停留在所选字段下

python - python中的变量类型检测