我在我的应用程序中尝试了kotlin代码中的猫王操作员,并在警告后接收到:
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
有什么想法如何解决这个问题?
我不明白为什么您在这里需要任何空安全操作员。您的变量都不是无效的。
你写了
check?key.replace("KEY", "ABDS-ASDSA-DSSS")?:check
?
(check
之后)不是Kotlin中的操作员。
您可能想要三元条件操作员,该操作员仅由if
/else
替换。
从您的评论来看,您似乎想要安全的呼叫操作员,即?.
,而不是?
。
check?.key?.replace("KEY", "ABDS-ASDSA-DSSS") ?: check
猫王操作员和安全呼叫操作员之间存在差异。猫王操作员可以使用表达式工作,而安全呼叫操作员只是 null-safe属性访问或方法调用。
猫王操作员(如果不是null)返回其第一个操作数,否则将返回第二个操作数。
?.
操作员如果接收器为null,则返回null
,否则,它将返回呼叫的结果。
kotlin不支持三元运算符。
,甚至check
都不是boolean
变量,在您的情况下使其成为布尔或使用
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