Kotlin:编码讨论:检查多个可能为空的变量的优雅方法

Mar*_*ger 4 null kotlin

我使用Kotlin对Android Apps进行编程。为了确保空指针安全,需要检查所有引用是否均为非空。但是,如果只有一个为空,那么我们应该通知用户出了点问题。

对我来说,以简洁易读的方式进行编程非常重要。

我正在寻找一个简短易懂的解决方案。

标准方法是:

if  (b != null && a != null && c !=null ...) println ("everything ok.")
else println("Something went wrong")
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 6

这是两种编写条件的简洁方法:

listOf(a, b, c).any { it == null }

listOf(a, b, c).filterNotNull().any()
Run Code Online (Sandbox Code Playgroud)

在上下文中,这是使用方式:

println(if (listOf(a, b).any { it == null })) "Something went wrong"
        else "Everything ok.")
Run Code Online (Sandbox Code Playgroud)

  • 虽然这种方法是我见过的最简洁的解决方案,并且在大多数情况下应该没问题,但我遇到的问题是,当检查仅允许代码在存在时执行时,它不会智能转换为非空值没有空值。 (3认同)