/ / Ako môžem prepojiť pole preskočiť predtým uvedené prvky? - rubín, polia

Ako môžem prepojiť pole preskočiť predtým uvedené prvky? - rubín, polia

Existuje spôsob, ako zakrútiť dve súbory a nechať ich vždy odkazovať na určitý prvok? Napríklad:

first_array = ["a", "b", "c", "d"]
second_array = ["e", "f", "g", "h"]

first_array.each |item| puts item.get(second_array)

Výsledky by vyzerali takto:

a would work with e
b would work with f
c would work with g
d would work with h

Snažím sa to urobiť tak, aby pri premennej first_array je prenesené do práce s second_array, presunie sa na ďalšiu premennú v second_array, preskočenie predtým používanej premennej.

odpovede:

8 pre odpoveď č. 1

To je zip.

first_array.zip(second_array){|e1, e2| ...}

2 pre odpoveď č. 2

Môžete urobiť niečo takéto:

first_array.each_with_index { |v, i| puts "#{v} can work with #{second_array[i]}" }
# a would work with e
# b would work with f
# c would work with g
# d would work with h

1 pre odpoveď č. 3

Za predpokladu, že ako vo vašom príklade sú oba súbory rovnakej veľkosti, môžete ich použiť Array # transpozícia:

a1 = %w{a b c d}
#=> ["a", "b", "c", "d"]
a2 = %w{e f g h}
#=> ["e", "f", "g", "h"]
[a1,a2].transpose { |s1,s2| puts "#{s1} and #{s2}" }
#-> a and e
#   b and f
#   c and g
#   d and h

Kedykoľvek pracujete s poľom a z rovnakých veľkostných polí (tu [a1,a2]) a chcete pracovať [a[0][i],a[1][i],..] pre každý i, vždy máte možnosť používať transpose alebo Array # zips, V istom zmysle sú Yin a yang.

Môžete tiež použiť indexy:

a1.each_index { |i] puts "#{a1[i]} and #{a2[i]}" }

0 pre odpoveď č. 4

dané druhé pole je vždy aspoň tak dlhé ako prvé

first_array.each_with_index |item,index| do
puts "#{item} would work with #{second_array[index]}"
end