に割り当てられた利用価値などのために、マップ内の前のキーに割り当てられた値を使用することが方法です:私は、「C」の値になりたいGroovyのマップ作成、前のキー
def x = [
a: someList.sum(),
b: anotherList.sum(),
c: someList.sum()/anotherList.sum()
]
/b、ショートカットがあるので、 'c'の計算中に合計を再計算する必要はありません
に割り当てられた利用価値などのために、マップ内の前のキーに割り当てられた値を使用することが方法です:私は、「C」の値になりたいGroovyのマップ作成、前のキー
def x = [
a: someList.sum(),
b: anotherList.sum(),
c: someList.sum()/anotherList.sum()
]
/b、ショートカットがあるので、 'c'の計算中に合計を再計算する必要はありません
新しいキー/値を計算するために以前に追加したキー/値を使用するには、キー/値が追加される順序を制御します。明らかなことは分かりますが、GroovyのMap
宣言では順序を考慮していません。キーc
の値のための式を評価する場合たとえば、あなたがこれを書いた場合...
def x = [
a: 8,
b: 2,
c: a/b
]
...、Groovyは、変数ので失敗しますれ、a
という名前の変数やプロパティにアクセスしようとします/プロパティは存在しません。ただし、そのプロパティの検索を利用してこれを行うことができます:
def x = [:].with {
a = 8
b = 2
c = a/b
delegate
}
あなたは空のMap
を作成することによって開始します。次に、with(Closure)
を使用して、Map
に対してputAt()
とget()
を実行します。上記の例では、それがx
に割り当てられているようにMap
自体を返し、最後に相当する...
def x = [:].with {
putAt('a', 8)
putAt('b', 2)
putAt('c', get('a')/get('b'))
delegate
}
です。
'def a = 1; def x = [a:a、b:a + 1] '? –
これは明らかでしたが、私が探していたものではありませんでした –
あなたはこれを望む理由を説明できますか?私は理論とは別の理由を考えることはできません。 –