目录
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')