这有效:
def myClosure = { println 'Hello world!' }
'myClosure'()
这不起作用:
def myClosure = { println 'Hello world!' }
String test = 'myClosure'
test()
为什么,有没有办法做到这一点?
和
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' )
}
}