最近、「Ruby のスタイルの要素 #3: 何かが配列であることを確認する」に出くわしました。
TL;DR: Array()
Ruby のメソッドは、入力したものをすべて配列に変換し、正しい結果がどうあるべきかを推測しようとします。
Array(1) # => [1]
Array([1,2]) # => [1,2]
Array(nil) # => []
では、何をArray({a: :b})
返しますか?ハッシュを値として持つ配列を返すと思います: [{a: :b}]
.
ただし、ハッシュは直接配列に変換されます: [:a, :b]
.
ハッシュを配列 ( ) に入れたいだけではありません[{a: :b}]
。何を入れても配列を返す機能が欲しいです。Array()
すでにそれを行っていますが、予想外の方法でハッシュを配列に変換します。
したがって、基本的に機能は次のようになります。
NewFancyArrayMethod({a: :b}) # => [{a: :b}]
NewFancyArrayMethod([{a: :b}, {c: :d}]) # => [{a: :b}, {c: :d}]
2 番目の部分は、 によってすでに満たされていArray()
ます。
values = [values] unless values.is_a? Array
記事が指摘しているように、私はのようなことができることを知っています。Array()
ただし、既に行っているように、この変換を私から抽象化するメソッドが必要です。唯一の問題はArray()
、ハッシュを他の「単一」値 (文字列、整数、オブジェクトなど) とは異なる方法で扱うことです。私は単に、ケースごとに異なる処理をしたくありません。