这有效:
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' )
}
}