为什么这不起作用
Type type = double;
switch (type) {
case int:
print('int');
case double:
print('double');
}
但是这样
switch (type) {
case const (int):
print('int');
case const (double):
print('double');
}
const (Type)
有什么用?它看起来就像将一个类或类型(以下简称类)转换为其常量形式。好吧,首先,将某些东西变成常量对我来说似乎是错误的,就像,我们只是定义它们并禁止重新定义它们。让某些东西只在一段时间内不可变,而不是不改变它,有什么意义呢? 其次,类本身在运行时不是不可变的吗?本质上可以理解为一个常量?
为什么不直接使用第一种形式来编写 switch-case 来比较类型呢?要么我不明白
const (Type)
的作用,要么我不明白类是什么(如果是这样,那么我希望只在 Dart 中)。
代码有效。
这个问题可能是由关于不使用case int:
的
lint警告提出的。
这是令人沮丧的,因为人们错误地写了
switch (someValue) { case int: ...}
并期望它检查该值是否是整数。
相反,它检查该值是否是等于 Type
的 int
对象,并且不会发出有关它无法匹配的警告(因为假设它可能是实现 Type
的已开启类型的子类的实例)
)。
您应该使用
int _
或 int()
检查该值是否为整数,为了避免 lint 警告,您可以使用 == int
或 const (int)
来强调您确实想要与 Type
进行比较
物体。
一般来说,比较
Type
对象通常是类设计与问题不匹配的标志。它通常也是脆弱且容易出错的代码。