Когда Groovy видит переменную в контексте, где ожидается логическое значение, он вызывает метод DefaultGroovyMethods.asBoolean(object)
для приведения указанного значения к своему логическому представлению.Для чисел выполняется следующий код:
/**
* Coerce a number to a boolean value.
* A number is coerced to false if its double value is equal to 0, and to true otherwise,
* and to true otherwise.
*
* @param number the number
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Number number) {
return number.doubleValue() != 0;
}
Источник: src / main / org / codehaus / groovy / runtime / DefaultGroovyMethods.java
Именно поэтому Groovy приводит от 0 до false
и любое ненулевое число к true
.
Существуют другие принуждения, которые Groovy сделал для вас, например, приведение пустого списка к false
, приведение пустых строкна false
и т. д. Я написал статью о некоторых из них , вы можете найти ее полезной.