2013-09-05 23 views
-4

我的代碼看起來像這樣結合幾個田地到一個foreach在RUBY

#!/usr/bin/ruby 
Shas = ["Pesachim","Shekalim","Yoma"] 
Pesachim=["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a", "7b"] 
Shekalim=["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a"] 
Yoma=["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a", "7b", "8a", "8b",  "9a", "9b", "10a", "10b", "11a", "11b", "12a", "12b", "13a", "13b", "14a"] 

counter = 0 
while counter < Pesachim.length 
    puts Shas[0] +" "+ Pesachim[counter] 
    counter +=1 

    bounter = 0 
    while bounter < Shekalim.length 
    puts Shas[1] +" "+ Shekalim[bounter] 
    bounter +=1 

你能不能幫我改寫這個作爲

Shas.each do |book| 
    counter = 0 
    while counter < book.length 
    puts book+" "+book[counter] 
    counter+=1 
    end 

我認爲有一些問題與「本本」不被與沒有雙引號的數組相同。

+1

你是缺少一些'末端' – lurker

+2

您的代碼示例無效。我們必須至少能夠加載和運行最少的樣本,並且要加載樣本數據文件。因爲你的代碼缺少'end'語句,所以我們無法猜測你在那裏做了什麼。 –

回答

1

我不明白Yoma在您的代碼中的相關性。

self.classmain上下文中是必要的。在不同的上下文中,將其刪除。

Shas.first(2).each{|book| self.class.const_get(book).each{|e| puts "#{book} #{e}"}} 

如果您打算遍歷Yoma爲好,然後:

Shas.each{|book| self.class.const_get(book).each{|e| puts "#{book} #{e}"}} 
+0

我從複製的JavaScript某處'變種arrPesachim,arrShekalim,arrYoma,arrSukah,arrBeitzah,arrRoshHashanah,arrTaanis,arrMegilah,arrMoedKatan,arrChagigah,arrYevamos,arrKesuvos,arrNedarim,arrNazir,arrSotah,arrGitin,arrKidushin,arrBavaKama,arrBavaMetzia,arrBavaBasra,arrSanhedrin ,arrMakos,arrShevuos,arrAvodahZarah,arrHorayos,arrZevachim,arrMenachos,arrChulin,arrBechoros,arrErchin,arrTemurah,arrKerisus,arrMeilah,arrNidah,ArrDummy' –

+0

我想Yoma意味着我重複了一些代碼,並認爲我可以從爲我輸入數組的列表。 –

1

我想你真正想要的是一個哈希:

Shas = {Pesachim: ["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a", "7b"], 
     Shekalim: ["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a"], 
     Yoma: ["2a", "2b", "3a", "3b", "4a", "4b", "5a", "5b", "6a", "6b", "7a", "7b", "8a", "8b", "9a", "9b", "10a", "10b", "11a", "11b", "12a", "12b", "13a", "13b", "14a"]} 

然後你就可以使用。每方法如下:

Shas.each do |key, values| 
    values.each {|counter| puts "#{key} #{counter}"} 
end 
+0

確切地說,我已經複製了所有這些#,如果您只是提醒我如何有效地遍歷數據,我並不介意將外部更改爲(list)[array]或{hash}。我認爲這是一個二維陣列,但是沒有你讓我確信這是一個散列。 –