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