2013-06-12 37 views

Odpowiedz

28
>> [1,2,3].zip(["a","b","c"], [:a,:b,:c]) { |x, y, z| p [x, y, z] } 
[1, "a", :a] 
[2, "b", :b] 
[3, "c", :c] 

transpose również działa, ale w przeciwieństwie zip, tworzy nową tablicę od razu:

>> [[1,2,3], ["a","b","c"], [:a,:b,:c]].transpose.each { |x, y, z| p [x, y, z] } 
[1, "a", :a] 
[2, "b", :b] 
[3, "c", :c] 

Uwagi:

  • Nie trzeba each z zip, trwa blok.

  • Wyrażenia funkcyjne są również możliwe. Na przykład, używając map: sums = xs.zip(ys, zs).map { |x, y, z| x + y + z }.

  • Dla dowolnej liczby tablic można wykonać: lub po prostu xss.transpose.

+3

** GŁOWICA WYBUCHA ** –

+0

Dzięki temu człowiek naprawdę docenia Twoją pomoc. –

+0

+ 1 Array manipulacje, za pośrednictwem 'zip',' transpose' lub wbudowanych operacji zestawu, są bardzo potężne narzędzia w Ruby. Możesz szybko zgrupować wiele danych. –

Powiązane problemy