0

なぜこのグルーヴィーなコードは

def versionString = '10.15.20'
int major
int minor
int patch
(major, minor, patch) = versionString.split(/\./).each { Integer.parseInt(it) }
println "$major.$minor.$patch"

この例外をスローします

Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '10' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '10' with class 'java.lang.String' to class 'int'

10.15.20 を表示する代わりに?

つまり、変数がクロージャーの出力ではなく、split() からの出力に割り当てられるのはなぜですか?

4

1 に答える 1

2

あなたが必要collect

(major, minor, patch) = versionString.split(/\./).collect { Integer.parseInt(it) }
于 2013-10-20T12:06:25.263 に答える