我在我的应用程序中使用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
有任何想法如何解决这个问题?
答案 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