Groovy 真值规则

目录

1. 布尔表达式

2. 集合和数组

3. 匹配器(Matcher)

4. 迭代器和枚举

5. 映射

6. 字符串

7. 数字

8. 对象引用

9. 使用 asBoolean 方法定制真值规则


Groovy 通过下面这些规则来决定要将一个表达式求值为布尔值时,结果是真(true)还是假(false)。

1. 布尔表达式

如果布尔值为 true,表达式结果就为 true,否则为 false。

assert true
assert !false

2. 集合和数组

非空集合和非空数组都被当作 true。

assert [1, 2, 3]
assert ![]

3. 匹配器(Matcher)

如果匹配器至少有一处匹配则被当作 true。

assert ('a' =~ /a/)
assert !('a' =~ /b/)

4. 迭代器和枚举

如果迭代器和枚举中还有元素则会被当作 true。

assert [0].iterator()
assert ![].iterator()
Vector v = [0] as Vector
Enumeration enumeration = v.elements()
assert enumeration
enumeration.nextElement()
assert !enumeration

5. 映射

非空映射会被当作 true。

assert ['one' : 1]
assert ![:]

6. 字符串

非空的字符串、GString、字符序列都会被当作 true。

assert 'a'
assert !''
def nonEmpty = 'a'
assert "$nonEmpty"
def empty = ''
assert !"$empty"

7. 数字

非零数字都会被当作 true。

assert 1
assert 3.5
assert !0

8. 对象引用

非 null 的对象引用会被当作 true。

assert new Object()
assert !null

 

9. 使用 asBoolean 方法定制真值规则

想要告知 Groovy 将你的对象求值为 true 还是 false,只要实现 asBoolean 方法即可:

class Color {
    String name

    boolean asBoolean(){
        name == 'green' ? true : false
    }
}

在需要将你定义的对象转换为布尔值时,Groovy 会自动调用 asBoolean 方法:

assert new Color(name: 'green')
assert !new Color(name: 'red')

 

 

 

 

 

 

 

 

你可能感兴趣的:(Groovy,Groovy,Groovy,Groovy,真值,Groovy,truth)