你需要做的是按照你描述的方式將列表從六個元素轉換爲三個元素。即將[1,2,3,4,5,6]
變換爲[1,2,[3,4,5,6]]
。你可能也希望這可以調整到任何數量的元素。
這裏是一個新的方法reduce
添加到List
的解決方案,其將在提出的方式列表:
List.metaClass.reduce = { int size -> delegate[0..size-2] + [delegate[size-1..-1]] }
def (first, second, rest) = [1,2,3,4,5,6].reduce(3)
assert first == 1
assert second == 2
assert rest == [3,4,5,6]
編輯:昨天晚上,睡覺的時候,我想過使用with
實現這作爲一個班輪。這與上面的想法是一樣的,儘管自從邏輯被內聯後更加神祕(較少可讀)。
def (first, second, rest) = [1,2,3,4,5,6].with { it[0..1] + [it[2..-1]] }
assert first == 1
assert second == 2
assert rest == [3,4,5,6]
是的,謝謝你的回答。我應該更清楚的問題(我現在已經更新了)。我正在尋找一種單一的表達/解構方法,它可以很容易地推廣,使得def(a,b,c ...)= [...] –
kunal
2014-09-27 12:28:47
@kunal我明白你想要什麼,但這是不可能的要做到這一點,因爲多重賦值語法只會將一個列表元素分配給每個變量 – 2014-09-27 12:41:17