我想编写一个接受单个值或数组的方法。在Ruby中这样做最好的成语是什么?
以下是我想过的几件事:
def do_something(items)
[*items].each { |item| ... }
end
我喜欢那个的简洁,但除非你习惯这种语法,否则不清楚
下一个感觉就像是太多的代码。
def do_something(items)
items = [items] unless items.respond_to? :each
items.each { |item| ... }
end
答案 0 :(得分:3)
Kernel#Array
方法在这里运行良好,旨在用于将数据强制转换为数组:
irb(main):001:0> def my_length(item_or_array)
irb(main):002:1> Array(item_or_array).length
irb(main):003:1> end
=> nil
irb(main):004:0> my_length('one')
=> 1
irb(main):005:0> my_length([1, 2, 3])
=> 3