people = [
{
"first_name" => "羅伯特"。
"last_name" => "Garcia",
"愛好" => ["籃球", "象棋", "電話標簽"]
},
{
"first_name" => "Molly",
"last_name" => "Barker",
"愛好" => ["編程", "閱讀", "慢跑"]
},
{
"first_name" => "Kelly",
"last_name" => "Miller",
"愛好" => ["板球", "烘焙", "集郵"]
}
]
index = 0
while index < "hobbies".length
p people[index]["hobbies"]
index = 1.
end
在我上的課中,他們要我使用p陳述句而不是puts,而且要我以回圈方式運行,我不明白 "未定義的方法'[]'是什么",誰能給我一些啟示,讓我盡可能簡單地了解一下?非常感謝任何幫助
。uj5u.com熱心網友回復:
你正試圖根據字串"hobbies"的長度來迭代人。現在,這個字串的長度是7,但是people陣列的長度只有3。
你要么想:
index = 0。
while index < people.length
p people[index]["hobbies"]
index = 1 end
或者更好的方法是直接使用each方法。
people.each do |person|
p person["hobbies"]
end
當我運行這個時,我看到:
people.each do |person|
irb(main):029:1* p person["hobbies"]
end
["籃球", "象棋", "電話標簽"]
["編程", "閱讀", "慢跑"]
["板球", "烘焙", "集郵"]
你得到的錯誤的原因可以通過一個非常簡單的例子來說明:
你得到的錯誤的原因是什么?
irb(main):001:0>/span> a = [2]
=> [2]
irb(main):002:0>/span> a.length
=>1]。
irb(main):003:0>/span> a[0]
=>2>
irb(main):004:0> a[1]
=> nil
當我們訪問一個索引超出范圍的陣列時,我們不會得到一個錯誤。我們只是得到nil。在你的代碼中,你試圖對nil進行下標,這確實導致了你所看到的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307611.html
標籤:
