当前位置: 首页 > 知识库问答 >
问题:

Kotlin空安全警告意外标记(使用;分隔同一行上的表达式)

裴存
2023-03-14

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

有什么办法解决这个问题吗?

共有1个答案

薛楷
2023-03-14

我不明白为什么你需要任何空的安全操作员在这里。您的变量中没有一个是可为空的。

你写的

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

(在检查之后)不是Kotlin中的运算符。

您可能希望使用三元条件运算符,该运算符仅被if/else替换。

从您的评论来看,您似乎想要安全的呼叫操作符,它是?.而不是

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

Elvis操作员和safe call操作员之间是有区别的。Elvis运算符与表达式一起工作,而safe call运算符只是一个null-safe属性访问或方法调用。

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

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

 类似资料: