I have worked through the dart codelab for iterables and stumbled upon this code fragment:
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;
....
What is the difference between line (a) and line (b)? For me it seems like they do the same. Or more generally asked: What is the difference between using the is-operator and using the runtimeType property of an object for checking the run-time type in dart?
aSet is Iterable– this istrueaSet.runtimeType == Iterablethis isfalseSo the is check handles subclasses.
Also, we really recommend that you avoid using
runtimeType. Especially when compiling to JavaScript. It can really blow up your compiled app size.I'll open an issue on that codelab!