Takže viem, že sa môžete pohybovať v 2D poli s niečím podobným
arr1.each do |a1|
a1.each do |a2|
puts a2
čo sa však snažím urobiť, je trochu iné. Mám 2 sady hodnôt uložených v poliach a chcem sa nimi prepnúť a vyplniť rozbaľovaciu ponuku z informácií.
Takže mám údaje ako:
names = ["bob", "frank", "tim"]
id = [1, 2, 3]
ktorá sa vráti do poľa metódou ako je táto:
def method_name
#stuff
return names, id
end
To, čo chcem v zobrazení urobiť, je spárovanie príslušných indexov medzi sebou. Takže pre vyššie uvedený príklad bob-1
frank-2
tim-3
Zdá sa, že na to prišiel. Skúsil som rozrezávať a vnoriť slučky a tiež som sa snažil vrátiť hash namiesto poľa. Stratil som sa.
Keby niekto mal nejaké informácie o tom, ako tieto informácie pritiahnuť spôsobom, ktorý sa snažím urobiť, alebo iným jednoduchším spôsobom, ako to urobiť, skutočne by som ocenil tento vstup.
odpovede:
0 pre odpoveď č. 1Toto je zriedkavý prípad v Ruby, kde je užitočné opakovanie indexu:
(0...names.size).map do |idx|
"#{names[idx]}-#{id[idx]}"
end
2 pre odpoveď č. 2
names.zip(id).map { |e| e.join("-") }
zip
kombinuje tieto dve polia do radu polí, ako je tento:
[["bob", 1], ["frank", 2], ["tim", 3]]
map
slučky cez každý z 3 prvkov vonkajšieho poľa a prevádza každé vnútorné pole na reťazec spojením svojich dvoch prvkov spolu s pomlčkou pomocou join
.
vidieť zips, mapa, a pripojiť dokumentácie.
Vo všeobecnosti sa pri výskume manipulácie s poľami v Ruby budete chcieť pozrieť na dokumenty pre Array aj na dokumenty pre Enumerable.