我无法在扩展类型中重新声明“==”运算符
extension type Compare(List<int> types) {
@redeclare
bool operator ==(List<int> other) =>true;
}
我收到这些错误:
扩展类型不能声明与成员同名的成员 由“对象”声明。尝试为成员指定不同的名称
还有这个
该方法不会重新声明在超级接口中声明的方法。 尝试更新此成员以匹配超级接口中的声明, 或删除重新声明注释
有没有办法在扩展类型中重新声明它?
当扩展声明声明的成员与类 Object 中声明的成员同名时,分析器会生成此诊断信息。这样的成员永远不能被使用,因为 Object 中的成员总是最先找到的。
示例:
以下代码会生成此诊断信息,因为
toString
是由 Object
定义的:
extension E on String {
String toString() => this;
}
由于无法在
Object
中覆盖 extension
类的成员,因此您应该为所需的功能使用其他名称。
extension ListComparison on List<int>{
bool equals (List<int> other){
if(length != other.length)
return false;
for(int i = 0 ; i < length; i++){
if(this[i] != other[i])
return false;
}
return true;
}
// you can't overload == operator in extensions, reserved by object
}
print([1,2,3].equals([1,2,3])); // true
print([1,2,3].equals([1,2,2])); // false
希望对您有帮助。