2010-10-01 67 views

回答

8
for f in @a 
    puts f 
end 

我們可以寫

puts @a.join("\n") 

在一般情況下,當你想要用幾個數組做一些事情,你可以把數組放到一個數組中,然後使用each例如

[@a, @b].each do |list| 
    list.each { |value| puts value } 
end 

,一旦你在做的事情不僅僅是打印出來是有意義的使用方法提取重構你正在執行例如操作的值更復雜

[@a, @b].each do |list| 
    do_something_with list 
end 

最後,如果你需要保持描述性標籤( 「全部爲」 等),您可以使用哈希:

{'As' => @a, 'Bs' => @b}.each_pair do |label, values| 
    puts "All #{label}" 
    puts values.join("\n") 
end 
+0

但它使用更多的內存。 – Hongli 2010-10-01 12:06:25

+0

有沒有辦法讓@a和@b至少有一個小標籤/標籤?問題在第二部分回答!謝謝! – poseid 2010-10-01 12:13:44

+0

紅利的評論發佈之前我擴大了多個建議的答案。爲了清楚起見,他指的是使用'join',它將構建一個包含所有值的新字符串。 – mikej 2010-10-01 12:18:26

0

只是猜...

def overview 
    puts "All As:" 
    puts_a(@a) 
    puts "\n" 

    puts "All Bs:" 
    puts_a(@b) 
end 

def puts_a(strs) 
    for str in strs 
    puts str 
    end 
end 
1

我會做這樣的事情:

def overview 
    [@a, @b].each do |e| 
     puts e.join("\n") 
    end 
end 
4
def print_all(header, ary) 
    puts header 
    for f in ary 
    puts f 
    end 
end 

def overview 
    print_all("All As:", @a) 
    puts 
    print_all("All Bs:", @b) 
end 
+1

'for f in ary;把f;結束'是不必要的。只要'放手'就能完成這項工作。 – steenslag 2010-10-01 15:52:47