groovy
スプレッドオペレータ
サーチ…
備考
ほとんどの場合、スプレッド演算子*.
.collect { it.________ }
と同じです。
def animals = ['cat', 'dog', 'fish']
assert animals*.length() == animals.collect { it.length() }
しかし、対象がヌルの場合、それらは異なる動作をします:
def animals = null
assert animals*.length() == null
assert animals.collect { it.length() } == []
メソッドを呼び出す
assert ['cat', 'dog', 'fish']*.length() == [3, 3, 4]
いくつかの要素にメソッドが存在しない場合、コレクション内で型を混合すると、 groovy.lang.MissingMethodException
がスローされることに注意してください。
['cat', 'dog', 'fish',3]*.length()
// it throws groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.length()
プロパティへのアクセス
class Vector {
double x
double y
}
def points = [
new Vector(x: 10, y: -5),
new Vector(x: -17.5, y: 3),
new Vector(x: -3.3, y: -1)
]
assert points*.x == [10, -17.5, -3.3]
注: *
はオプションです。また、次の行のように上記のステートメントを書くこともできます.Groovyコンパイラはまだそれに満足しています。
assert points.x == [10, -17.5, -3.3]
そのヌルセーフ
コレクションにnull
オブジェクトがある場合、 NPE
スローしません。代わりにnull
を返します。
assert ['cat', 'dog', 'fish', null]*.length() == [3, 3, 4, null]
それをnull
オブジェクトで直接使用すると、 null
でも安全です。
def nullCollection = null
assert nullCollection*.length() == null
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow