Flutter 不同类型的Dart相等
我想实现像enum这样的类Flutter 不同类型的Dart相等,flutter,dart,enums,Flutter,Dart,Enums,我想实现像enum这样的类 @不可变 抽象类枚举{ 最终T值; @文字的 常量枚举([this.value]); 列表获取值=>value!=null?[value]:常量[]; @凌驾 布尔运算符==(对象?其他){ 如果(其他为T){ 返回值==其他; } 返回other is Enum&&other.value==value; } @凌驾 int get hashCode=>super.hashCode; } 类EnumClass扩展了Enum{ @文字的 常量枚举类(int值):超级(值
@不可变
抽象类枚举{
最终T值;
@文字的
常量枚举([this.value]);
列表获取值=>value!=null?[value]:常量[];
@凌驾
布尔运算符==(对象?其他){
如果(其他为T){
返回值==其他;
}
返回other is Enum&&other.value==value;
}
@凌驾
int get hashCode=>super.hashCode;
}
类EnumClass扩展了Enum{
@文字的
常量枚举类(int值):超级(值);
静态常量零=常量枚举类(0);
静态常量一=常量枚举类(1);
//你可以有任何你想要的功能
}
这样我就可以做下面的操作了
if(EnumClass.zero==0){
//这管用!
}
但是我的测试失败了
void main(){
测试('将EnumClass.0与0进行比较',(){
如果(EnumClass.zero==0){
打印('same');//这是打印的
}
expect(EnumClass.zero,0);//但测试失败
});
}
与0的比较按预期进行,但expect函数不起作用。
我应该怎么做才能通过考试?请注意:
expect(EnumClass.zero,0);
失败,但:
expect(0,EnumClass.0);
成功expect(实际,预期)
默认情况下使用等于匹配器
,而等于的实现
可以说,如果expect(A,B)
通过比较A==B
而不是B==A
来匹配原始顺序会更直观,但是使用非对称等式将很容易出错,而且可能无论如何都不是一个好主意
另请参见。注意:
expect(EnumClass.zero,0);
失败,但:
expect(0,EnumClass.0);
成功expect(实际,预期)
默认情况下使用等于匹配器
,而等于的实现
可以说,如果expect(A,B)
通过比较A==B
而不是B==A
来匹配原始顺序会更直观,但是使用非对称等式将很容易出错,而且可能无论如何都不是一个好主意
另请参见。由于==通常被认为是对称的,我想知道如何解决这个问题。由于Dart不支持重载,如果其中一个类型涉及到一个您不控制的类,则无法真正使运算符==
对称。您可以使一些bool等于(objectobject1,object2)=>(object1==object2 | | object2==object1)
函数,如果您真的想要,但这可能仍然不是一个好主意,因为不对称也可能意味着hashCode
值会不同。而且由于==通常被认为是对称的,我想知道如何解决这个问题。因为Dart不支持重载,如果其中一种类型涉及到一个您不控制的类,那么就不能真正使操作符==
对称。您可以使一些bool等于(objectobject1,object2)=>(object1==object2 | | object2==object1)代码>函数,但这可能仍然不是一个好主意,因为不对称也可能意味着hashCode
值会有所不同。