如何在Ruby中干?

pos*_*eid 5 ruby dry

我怎么能缩短和扩展它:

  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

mik*_*kej 8

for f in @a
  puts f
end
Run Code Online (Sandbox Code Playgroud)

我们能写吗?

puts @a.join("\n")
Run Code Online (Sandbox Code Playgroud)

在一般情况下,当您想要对多个数组执行某些操作时,可以将数组放入数组中,然后使用eacheg

[@a, @b].each do |list|
  list.each { |value| puts value }
end
Run Code Online (Sandbox Code Playgroud)

一旦你开始做一些比打印输出值更复杂的事情,使用提取方法重构你正在执行的操作是有意义的,例如

[@a, @b].each do |list|
  do_something_with list
end
Run Code Online (Sandbox Code Playgroud)

最后,如果您需要保留描述性标签("All As"等),您可以使用哈希:

{'As' => @a, 'Bs' => @b}.each_pair do |label, values|
    puts "All #{label}"
    puts values.join("\n")
end
Run Code Online (Sandbox Code Playgroud)