我不确定如何在 ruby中更干净地编写这段代码?唯一不同的是迭代器. if items.respond_to?(:find_each) items.find_each do |item| output_item(csv, item) end else items.each do |item| output_item(csv, item) end end 您可以
if items.respond_to?(:find_each) items.find_each do |item| output_item(csv, item) end else items.each do |item| output_item(csv, item) end end您可以使用
Object#send
动态调用方法:
method = items.respond_to?(:find_each) ? :find_each : :each items.send(method) do |item| output_item(csv, item) end