Groovy:三元运算符表示“”为空

Groovy: Ternary operator says that "" is null

def nullString = "String is NOT null"

def check = (nullString != null) ? nullString : "String is null"
def check2 = nullString ? nullString : "String is null"
def check3 = nullString ?: "String is null"

println check 
println check2
println check3

如果我错了告诉我,但是上面这三个三元语句应该都做同样的事情,即如果 nulString 不为空,则打印出 "String is NOT null"。如果 nullString 为 null,则打印出 "String is null".

我想你们都同意,如果我初始化一个像 nullString = "" 这样的变量,它就不是 null。仅仅因为“”不为空。

但是当使用 nullString = "" 测试上面的代码时,只有第一个打印出 "String is NOT null"。另外两个将“”解释为空。这是为什么?

(抱歉我的英语不好,我希望你明白我想说什么)

The empty string is falsy in Groovy.

默认情况下,空字符串的计算结果为 false,此计算结果为 true:

assert !""