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 に答える