我收到这个错误 -----
error: incompatible types: IntRange and Int
3..12 -> print("Good fish name")
var fishName = "anyname"
when (fishName.length){
0 -> print("Error")
3..12 -> print("Good fish name")
else -> {
print("OK fish name")
}
}
我期待能够打印出消息“Good fish name”
A
when
构造正在比较论证 fishName.length
,这是一个 Int
与 when
构造中的每个值。第一个0
是一个Int
,但是3..12
是一个IntRange
;每个都必须是平等测试的Int
。
这里有三种解决方案:
传递
Int
s...
when (fishName.length){
0 -> print("Error")
3,4,5,6,7,8,9,10,11,12 -> print("Good fish name")
else -> {
print("OK fish name")
}
}
或使用此替代形式,将零测试也更改为范围:
when (fishName.length){
in 0..0 -> print("Error")
in 3..12 -> print("Good fish name")
else -> {
print("OK fish name")
}
}
更新 来自@gidds - “Kotlin 让你可以将单个值……与谓词混合”:
when (fishName.length){
0 -> print("Error")
in 3..12 -> print("Good fish name")
else -> {
print("OK fish name")
}
}
见https://kotlinlang.org/docs/control-flow.html#when-expression