一個多維數組的一個項目我有這樣如何調用紅寶石
i = 0
lines.each do |l|
array[i] = l.split(',')
i+=1
end
一個數組,我想打電話$array[1][3]
像PHP的,但它沒有工作。我已經谷歌超過幾個小時了,並且找不到解決方案。
一個多維數組的一個項目我有這樣如何調用紅寶石
i = 0
lines.each do |l|
array[i] = l.split(',')
i+=1
end
一個數組,我想打電話$array[1][3]
像PHP的,但它沒有工作。我已經谷歌超過幾個小時了,並且找不到解決方案。
首先有一些改進,以您的codez:
# initialize your vars
array = []
lines.each do |l|
array << l.split ',' # use the << operator
end
現在紅寶石數組的美元符號是沒有必要的,它指的全局變量,它不使用它們很好的做法。
您應該像這樣訪問您的變量:array[1][3]
。
你可以讓你的代碼一襯在ruby1.9:
array = lines.each_line.map {|l| l.split ',' }
紅寶石1.8的方式有什麼問題? array = lines.collect {| l | l.split','} – Simon 2011-04-13 15:06:31
@Simon沒有特別的,我補充說,這只是一個獎金重構。假設行是一個字符串,也可以重寫爲1.8.7,如'array = lines.split(「\ n」)。 l.split','}'。 – 2011-04-13 15:09:04
如果你的問題是,調用array[6][3]
回報類似Error: method [] undefined for nil
,然後做這個:
array[6].to_a[3]
每當任行(6)或列(3)超出範圍,則返回nil
。 to_a
可確保即使行超出範圍,它仍然會給出一個空數組,以便搜索列不會返回錯誤。
當你說「沒有工作」時,你實際上並沒有告訴我們什麼時候出錯。你是否得到了錯誤的答案,你是否看到錯誤信息,你的電腦是否爆炸成了紫色大象的陣雨? – Gareth 2011-04-13 15:18:49
sry我有一個Windows相關的錯誤,我開始我的Ubuntu的,它的工作方式 – Mikee 2011-04-13 15:37:51