我是var server = app.listen(80, function () { ... }
的新手,我尝试了几种方法来使用以下代码
kotlin
在上面的代码 strAction.contains(“Grid”)中,这一行显示错误的不兼容类型
答案 0 :(得分:15)
请尝试从when(strAction)
when
参数
val strAction = "Grid"
when {
strAction.contains("Grid") -> println("position is 1")
}
答案 1 :(得分:2)
您无需通过strAction
val strAction = "Grid"
when {
strAction.contains("Grid") -> println("position is 1")
}
}
答案 2 :(得分:2)
如果when
中只有一个案例,我建议您改用if
。那已经是你想要做的了:
val strAction = "Grid"
if(strAction.contains("Grid")){
println("position is 1")
}
更短,不是吗?
仅供记录:您启用String
(when
}但Boolean
个案例,这将无效。但是这会有什么作用:
val strAction = "Grid"
when(strAction.contains("Grid")){
true->println("position is 1")
}
但是,请再次if
。
答案 3 :(得分:2)
您还可以结合使用when
和with
以获得不错的语法:
with(strAction) {
when {
contains("Grid") -> println("position is 1")
contains("bar") -> println("foo")
startsWith("foo") -> println("bar")
else -> println("foobar")
}
}
您还可以将when
的结果保存到属性中:
val result = with(strAction) {
when {
contains("bar") -> "foo"
startsWith("foo") -> "bar"
else -> "foobar"
}
}
println(result)
答案 4 :(得分:0)
其他答案解释了如何解决问题但不解决实际问题。您的代码会计算strAction.contains("Grid")
(这将是Boolean
),然后将strAction
与此值进行比较。即它相当于
if (strAction == strAction.contains("Grid")) {
println("position is 1")
}
它们不能相等,因为类型不兼容,所以永远不会采用这个分支,编译器会告诉你。
答案 5 :(得分:0)
您可以在
中使用Kotlinif ("Grid" in strAction) { println("position is 1") }