2011-11-22 63 views
0

比方說,我有句數組:乾淨的方法做這樣的事情「Sentences.each.each」在Ruby中

a = ["I love pie", "I love you more and more each day", "every day is a good day"] 

我想測試句子中的每個單詞。因爲紅寶石太棒了,所以我認爲每個e.each都可以工作,但事實並非如此。有沒有一個乾淨的方式,而不必嵌套每個內部的每個內部?

+1

值得一提的是,有沒有串#每個,所以「我愛餡餅」。每個都是一個'NoMethodError'。你需要''我愛餡餅「.split.each',即使沒有包裝數組。 – Chowlett

回答

5
a.each { |sentence| sentence.split.each { |word| # do something with the word } } 

或稍長的格式,如果:

a.each do |sentence| 
    sentence.split.each do |word| 
    # do something 
    # do something 
    # do something 
    end 
end 
+0

一種格式被認爲比另一種更好嗎? –

+2

好,如果你需要一個班輪,第一個可以工作。但是如果你需要對每個'word'做一堆東西,那麼你可能想用多行'do ... end'塊代替。 –

2

如果你想避免嵌套(至少在視覺上),你可以使用:

a.map(&:split).flatten.each{ |word| # do something } 
相關問題