1

私はGroovyが初めてです。次の Groovy コードを実行します。

myList=[234, 34, "Stackoverflow", 3.14]

myList=myList.collect {if (it instanceof Integer) it*it}     

println myList

それは出力します:

[54756, 1156, null, null]

文字列の値を変更すべきではないように思えます。2行目を次のように変更すると:

myList=myList.collect {if (it instanceof Integer) it*it else it=it}

それは私が期待したように動作します:

[54756, 1156, Stackoverflow, 3.14]

その背後にあるロジックは何なのか気になります!

4

2 に答える 2

3

else最初のバージョンには句がないためnull、結果は です。

2 番目のバージョンも次のように動作するはずです。

myList.collect {if (it instanceof Integer) it * it else it}
于 2012-10-05T16:50:47.750 に答える
1

その理由は、要素が整数ではなく、デフォルトでnullになっている場合に、最初のクロージャの結果を指定していないためだと思います。

​println a()

def a() {
   if (1==2) "Hello!"
}​

>> null
于 2012-10-05T16:52:40.867 に答える