在尝试用 groovy 中的闭包重新发明 if/else 语法时,我无法让它工作。我认为在括号外放置多个闭包是不允许的,但它可能是别的东西。
如果不允许,您将如何重现 if/else 语法?这是一个思想实验,所以不要告诉我这个实现的效率低下。
我的代码:
void ifx(boolean condition, Closure action){
["${true.toString()}": action].get(condition.toString(), {})()
}
void ifx(boolean condition, Closure action, Closure elsex){
["${true.toString()}": action, "${false.toString()}": elsex].get(condition.toString())()
}
void elsex(Closure action){
action()
}
ifx(1==2){
println("1")
} ifx(1==3){
println("2")
} elsex{
println("3")
}
错误信息:
java.lang.NullPointerException:无法在空对象上调用方法 ifx()