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
是不boolean
variables在你的情况下使布尔或使用像
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