gpt4 book ai didi

flutter - Dart switch语句-大小写表达式必须为常数

转载 作者:行者123 更新时间:2023-12-03 02:43:50 24 4
gpt4 key购买 nike

我针对其他语言查看了与此相关的一些问题,有人建议使用final,但这似乎不适用于Dart。

我要传递参数,所以可以肯定switch语句不能仅包含常量吗?一个switch语句,就像一个if语句正在询问它是否存在..ie未知,所以我看不到switch语句必须是常量时如何有用...?

  setCategory(arga, argb) {
int result;
switch (true) {
case (arga >= 0 && arga < 3 && argb < 35):
result = 16;
break;
case (arga >= 0 && arga < 3 && argb >= 35):
result = 15;
break;
etc

它返回有关case表达式中值arga和argb的错误 Case expressions must be constant。解决此问题的最佳方法是什么,还是必须使用if语句?

最佳答案

开关条件表达式必须肯定是常量。

您必须使用if/then链基于非恒定值进行多个测试。

您不能在开关盒中使用周围函数的参数。 Dart switch语句不支持您在此处尝试执行的操作。

故意将Dart switch语句保持非常简单,以便编译器可以在编译时知道所有可能的情况。这就是为什么它们必须是编译时常量的原因。

switch语句对于某些类型的切换仍然有用,例如枚举:

enum Nonse { foo, bar, baz; }

String fooText(Nonse non) {
switch (non) {
case Nonse.foo: return "foo";
case Nonse.bar: return "bar";
case Nonse.baz: return "baz";
}
throw ArgumentError.notNull("non");
}

您还可以切换常量字符串值或整数值。

关于flutter - Dart switch语句-大小写表达式必须为常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com