В чем разница между использованием оператора is и использованием типа времени выполнения в Dart? - PullRequest
1 голос
/ 28 января 2020

Я прошел через кодовую метку 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 и использованием свойства runtimeType объекта для проверки типа времени выполнения в dart?

1 Ответ

1 голос
/ 28 января 2020

aSet is Iterable - это true

aSet.runtimeType == Iterable это false

Итак, проверка выполняется для подклассов.

Кроме того, мы действительно рекомендуем вам избегать , используя runtimeType. Особенно при компиляции в JavaScript. Это может действительно взорвать размер вашего скомпилированного приложения.

Я открою вопрос об этой кодовой метке!

...