這可能是一個愚蠢的問題,但我正在嘗試學習 Ruby 的基礎知識,所以請保持溫和。我想遍歷一個字串陣列,然后遍歷該字串中的每個字母。
groceries = ['turkey', 'cranberries', 'stuffing', 'pumkin pie', 'whip-cream']
for i in groceries do
p i
for x in i do
p x
end
end
當我嘗試運行它時,出現以下錯誤。任何幫助都會很棒。
undefined method `each' for "turkey":String (NoMethodError)
uj5u.com熱心網友回復:
由于mu 太短,因此 each似乎更符合標準的 Ruby 約定。也就是說,我是 Ruby 和一般編程的新手。因此,請保留我的意見。
無論如何,有一些有用的方法似乎可以滿足您的需要。 each_char并且chars將通過串迭代。
for i in groceries do
p i
i.chars { |c| p c }
end
或者,
groceries.each do |i|
p i
i.chars { |c| p c }
end
uj5u.com熱心網友回復:
使用 Array#map 和 String#each_char
For 回圈是 Ruby 中的語法糖,您通常不會在慣用的 Ruby 代碼中看到它們。相反,Rubyists 傾向于使用迭代器方法。以下是更慣用的,盡管肯定有其他方法可以完成您想要完成的作業。
groceries.map { |item| p item; item.each_char { |char| p char } }
除了列印您想要的輸出之外,這還具有回傳原始字串值陣列的好處:
#=> ["turkey", "cranberries", "stuffing", "pumkin pie", "whip-cream"]
這適用于任何版本的 Ruby >= 2.7.1(可能更早,但我沒有費心去測驗)。您也許可以使用更高版本的 Ruby 的功能來采取進一步的捷徑,但這肯定會讓您開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357325.html
