これは機能します:
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' )
}
}