假设我有:
class Test<T> {
void method() {
if (T is int) {
// T is int
}
if (T == int) {
// T is int
}
}
}
我知道我可以重载==
运算符,但是如果我没有重载任何运算符,在Dart中==
和is
之间的主要区别是什么。
编辑:
假设我有以下代码:
extension MyIterable<T extends num> on Iterable<T> {
T sum() {
T total = T is int ? 0 : 0.0; // setting `T == int` works
for (T item in this) {
total += item;
}
return total;
}
}
当我使用我的扩展方法时,比如:
var addition = MyIterable([1, 2, 3]).sum();
我遇到了这个错误:
类型“double”不是类型“int”的子类型