在kotlin中使用elvis运算符时如何否定布尔表达式?

luk*_*kle 11 kotlin

我想否定以下表达式:

return SpUtils.loadEMail()?.isEmpty() ?: false

如果我添加一个!在表达之前,就像

return !SpUtils.loadEMail()?.isEmpty() ?: false

IDE(Android Studio)告诉我

在类型为kotlin.Boolean的可空接收器上只允许安全(?.)或非空的断言(!!.)调用?

我怎么否定这种表达方式呢?

Rus*_*lan 8

你有可空引用的问题.

 SpUtils.loadEMail()?.isEmpty()
Run Code Online (Sandbox Code Playgroud)

此代码生成Boolean类型的值?这个mean表达式可以返回Booleannull的实例.

我建议使用以下代码来解决您的问题:

return !(SpUtils().loadEMail()?.isEmpty() ?: false);
Run Code Online (Sandbox Code Playgroud)

你尝试否定布尔?而不是布尔,elvis运算符返回!