我觉得这是一个愚蠢的问题,但我无法让它发挥作用。
是)我有的:
if (current is classA){
//do stuff
return;
}
if (current is classB){
//do stuff
return;
}
if (current is classC){
//do stuff
return;
}
我想要的是:
switch (currentState) {
case is classA: {
//do stuff
break;
}
case is classB: {
//do stuff
break;
}
case is classC: {
//do stuff
break;
}
}
我真正想要的是什么(Kotlin):
When (currentState){
is classA -> //do stuff
is classB -> //do stuff
is classC -> //do stuff
}
无论如何我可以像Kotlins When操作员一样使用Dart Switch,或者至少使用其他操作符==来断言案例评估?
没有。
Dart开关盒是一个非常低级的结构。它只允许不覆盖运算符==
的常量值表达式(少数基本平台类型除外),因此可以使用identical
检查实现它。
没有能力进行复杂的检查,或检查对象的类型,只能进行身份检查。
推荐的美妙方法是让ClassA,ClassB和ClassC都实现与doStuff
成员的接口,然后执行:
currentState.doStuff()
如果那是不可能的,那么你回到了if
序列。