Ruby: Object.to_a の置き換え 質問する

Ruby: Object.to_a の置き換え 質問する

渡された引数(単一のオブジェクトまたはコレクション)を配列に変換する必要があります。引数が何であるかわかりません。すでに配列である場合はそのままにし、そうでない場合は1要素の配列を作成します。両方を許可しmethod(:objs => obj)method(:objs => [obj1, obj2])

これが最善の方法のようです (Array#to_a は self を返します):

arg = arg.to_a

しかし、Rubyのドキュメントにはこう書いてあるObject#to_aすぐに時代遅れになる便利な代替品はありますか?

これより簡潔なものはありますか?

arg = arg.respond_to?(:to_a) ? arg.to_a : [arg]

ベストアンサー1

方法を使用するカーネル#配列:

Array([1,2,3]) #=> [1, 2, 3]
Array(123) #=> [123]

はい、最初はクラスのように見えるかもしれませんが、これは実際には大文字で始まるメソッドです。

おすすめ記事