3

我在我的应用程序中尝试使用 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

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

4

2 回答 2

2

我不明白为什么在这里需要任何空安全运算符。您的所有变量都不能为空。


你写了

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

?(之后check)不是 Kotlin 中的运算符。

您可能想要三元条件运算符,它被简单地替换为if/else

从您的评论来看,您似乎想要安全的呼叫运营商,但?.不是?.

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

猫王接线员和安全呼叫接线员之间是有区别的。Elvis 运算符与表达式一起使用,而安全调用运算符只是一个空安全的属性访问或方法调用

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

如果接收者为空,则?.运算符返回null,否则返回调用结果。

于 2017-12-04T19:10:52.697 回答
0

kotlin 不支持三元运算符。

甚至在您的情况下也不checkboolean可变的,使其成为布尔值或使用类似

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
于 2017-12-04T19:00:28.147 回答