如何访问DART中案例中的开关参数



我想打开动物并采取适当的动作。

switch (animal.runtimeType) {
  case Cat:
    animal.pet();
    break;
  case Crocodile:
    animal.runAway();
    break;
  default:
    print('Not a known animal.');
} 

如果我要链接这将起作用,因为范围将知道if (animal is Cat){}块中的animal的类型。

由于某种原因,开关语句并非如此。在这种情况下,我将获得错误

The method pet() isn't defined for the class animal

如何在案例块中使用案例断言?我不能使用as,因为我的CI棉布不允许它(这是一件好事(,并且在情况内使用IF操作是没有意义的,因为使用IF-ELSE语句的代码较小,并且提供了更多的可用性。

我不确定我是否不理解您的问题或您不了解问题。

假设您在Cat内定义了pet(),而不是在Animal中定义了错误,则错误The method pet() isn't defined for the class animal发生了,因为Animal是通用的。Animal不一定是Cat,因此您无法调用Animal的方法pet(),因为它仅在Cat内定义。

如果animal是局部变量,则在箱体块中施放完全安全。您可以可靠地进行(animal as Cat).pet();,一旦您检查了animal确实是Cat

最新更新