这有效:
def myClosure = { println 'Hello world!' }
'myClosure'()
这不起作用:
def myClosure = { println 'Hello world!' }
String test = 'myClosure'
test()
为什么,有没有办法实现呢?
答案 0 :(得分:3)
使用
test()
解析器会将其评估为对test
闭包/方法的调用,而不首先将其作为变量进行评估(否则您无法调用任何具有相同名称变量的方法)
相反,请尝试:
myClosure = { println 'Hello world!' }
String test = 'myClosure'
"$test"()
class Test {
def myClosure = { println "Hello World" }
void run( String closureName ) {
"$closureName"()
}
static main( args ) {
new Test().run( 'myClosure' )
}
}
class Test {
def myClosure = { println "Hello World" }
def run = { String closureName ->
"$closureName"()
}
static main( args ) {
new Test().run( 'myClosure' )
}
}