Kotlin Null安全警告意外的令牌(使用;在同一行上分离表达式)

时间:2017-12-04 18:52:03

标签: android null kotlin warnings kotlin-null-safety

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

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

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

2 个答案:

答案 0 :(得分:1)

我不明白为什么你需要任何null安全操作符。你的变量都不可为空。

你写了

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

?(在check之后)不是Kotlin中的运营商。

您可能想要ternary conditional operator, which is simply replaced by if/else

根据您的评论,您似乎想要safe call运算符,?.,而不是?

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

Elvis operator和安全通话运营商之间存在差异。 Elvis运算符使用表达式,而安全调用运算符只是一个空的安全属性访问或方法调用

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

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

答案 1 :(得分:0)

kotlin不支持三元运算符。

甚至$con = new mysqli("localhost", "my_user", "my_password", "world"); $sql = "UPDATE `some_table` SET `txid`= '$txid', `data` = '$data' WHERE `wallet` = '$wallet'"; if ($mysqli->query($sql, $con)) { print "wallet $wallet updated"; }else{ printf("Errormessage: %s\n", $con->error); } $con->close(); 在您的情况下不是check变量使其成为布尔值或使用类似

boolean