Groovy 1.5.x / 1.0.x Grails If-Else-Anweisung Fehler
-
05-07-2019 - |
Frage
Ich habe diesen Code in einem Grails 1.0.4 Groovy Konsole:
def devices = Device.getAll()
def found = devices.findAll {
if(it?.localNumber && it?.areaCode){
def pattern = ~".*${it.areaCode + it.localNumber}"
def matches = "$msisdn" ==~ pattern
println "$matches == msisdn: $msisdn ==~ pattern: $pattern"
matches
} else {
false
} // if-else
}
println "found: $found"
Welche gibt diese:
discovering device: 048123456
true == msisdn: 048123456 ==~ pattern: .*48123456
true == msisdn: 048123456 ==~ pattern: .*48123456
true == msisdn: 048123456 ==~ pattern: .*48123456
false == msisdn: 048123456 ==~ pattern: .*48123457
found: []
Bin ich etwas fehlt oder ist es ein Bug?
EDIT: Habe ich es wie folgt aus:
def found = devices.findAll {
def matches = false
if(it?.localNumber && it?.areaCode){
def pattern = ~".*${it.areaCode + it.localNumber}"
matches = "$msisdn" ==~ pattern
println "$matches == msisdn: $msisdn ==~ pattern: $pattern"
} else {
matches = false
} // if-else
matches
}
und jetzt funktioniert es! Shouln't das groovy Wert if-else-Konstrukt zurückkehren?
Lösung
Das ist ein Bug / fehlende Funktion, die in Groovy 1.6.x wurde behoben, so dass es in Grails arbeiten würde 1.1+. Für Grails 1.0.x / 1.5.x Groovy müssen Sie explizit einen Wert von jedem, wenn Zweig zurück.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow