Kotlin Null安全警告意外令牌(使用;在同一行上分隔expression式)

我在应用程序中尝试使用Kotlin代码中的Elvis运算符 ,并收到以下警告:

Unexpected tokens (use ; to seperate expressions on the same line) 

码:

  var key: String = "KEY is" /* "check" is name of String variable which can be null Warning coming on following statement*/ var str : String = check?key.replace("KEY", "ABDS-ASDSA-DSSS")?:check 

任何想法如何解决这个问题?

我不明白你为什么需要这里的空安全运营商。 你的variables都不能为空。


你写了

 check?key.replace("KEY", "ABDS-ASDSA-DSSS")?:check 

?check后)不是Kotlin的运营商。

你可能想要三元条件运算符,它简单地由if / else取代 。

从你的评论来看,你似乎想要安全调用运营商,这是?. 不是?

 check?.key?.replace("KEY", "ABDS-ASDSA-DSSS") ?: check 

猫王操作员和安全呼叫操作员之间是有区别的。 Elvis操作符使用expression式,而安全调用操作符只是一个无效的属性访问或方法调用

如果Elvis运算符不为null,则返回其第一个操作数,否则返回第二个操作数。

那个?. 如果接收者为空则返回null,否则返回调用结果。

kotlin不支持三元运算符。

甚至check是不booleanvariables在你的情况下使布尔或使用像

 var check: String = "something here" var key: String = "KEY is" /*Warning coming on following statement*/ var str : String = key.replace("KEY", "ABDS-ASDSA-DSSS")?:check