我怎样才能让它更短且可扩展:
def overview puts "All As:" for f in @a puts f end puts "\n" puts "All Bs:" for f in @b puts f end end
答案 0 :(得分: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
最后,如果您需要保留描述性标签(“All As”等),您可以使用哈希:
{'As' => @a, 'Bs' => @b}.each_pair do |label, values|
puts "All #{label}"
puts values.join("\n")
end
答案 1 :(得分: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
答案 2 :(得分:1)
我会做那样的事情:
def overview
[@a, @b].each do |e|
puts e.join("\n")
end
end
答案 3 :(得分: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