0

このコードが機能しない(出力がない)のはなぜですか?

clo1 = {
    for(int i =0; i<=10; i++){
        println(i);
    }
}

def thread = Thread.start { clo1 }

しかし、これは機能します:

def thread = Thread.start {
    for(int i =0; i<=10; i++){
        println(i);
    }
}
4

3 に答える 3

2

clo1スレッドで実行したい場合は、次のいずれかを行うことができます

Thread.start clo1 // same as Thread.start(clo1)

また

Thread.start { clo1() }

最初のものは、クロージャを直接 に渡しThread.startます。2 番目の解決策は、実行する新しいクロージャを作成しclo1ます。

新しいクロージャ (何Thread.start { clo1 }もしない) を に渡すだけですThread.start

于 2013-01-18T19:47:41.223 に答える
2

Thread.start { clo1 } に渡されたクロージャー内にクロージャー (clo1) を配置したようです。Threat.start clo1 を呼び出すと、期待した結果が得られます。

于 2013-01-18T19:48:08.240 に答える
2

クロージャーをクロージャーでラップしています

試す

def thread = Thread.start clo1
于 2013-01-18T19:48:16.213 に答える