1

我想编写一个接受单个值或数组的方法。在 Ruby 中执行此操作的最佳习惯用法是什么?

以下是我想到的几件事:

def do_something(items)
  [*items].each { |item| ... }
end

我喜欢那个简洁,但除非你习惯这种语法,否则不清楚

下一个只是感觉代码太多了。

def do_something(items)
  items = [items] unless items.respond_to? :each
  items.each { |item| ... }
end
4

1 回答 1

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
于 2012-07-24T16:16:58.513 回答