无法在kotlin`whenexpression式中使用string.contains()
我是新的kotlin,我已经尝试了几种使用下面的代码的方法
val strAction = "Grid" when(strAction){ strAction.contains("Grid")->println("position is 1") }
在上面的代码strAction.contains(“Grid”)这行显示了一个不兼容types的错误
试试这个从when
删除when(strAction)
参数
val strAction = "Grid" when { strAction.contains("Grid") -> println("position is 1") }
如果你的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
。
你不需要通过strAction
val strAction = "Grid" when { strAction.contains("Grid") -> println("position is 1") } }
其他答案解释了如何解决这个问题,但不是问题实际上是什么。 你的代码计算strAction.contains("Grid")
(这将是一个Boolean
),然后比较strAction
和这个值 。 即它相当于
if (strAction == strAction.contains("Grid")) { println("position is 1") }
因为types不兼容,所以它们不能相同,所以这个分支永远不会被采用,编译器会告诉你这一点。