あー、そういう原理だったのね…というメモ
環境
$ ruby -v ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
よくある実例
代表的な使い方例
a = "Yeah!" # => "Yeah!" [a] # => ["Yeah!"] Array(a) # => ["Yeah!"] Array(["hoga","huge"]) # => ["hoga", "huge"]
間違いやすい例
a = nil # => nil [a] # => [nil] # nilを指定するとnilが添字0に入るわけではなく空になる Array(a) # => []
# 配列で囲まないと引数の関係でエラー Array("hoga","huge") ArgumentError: wrong number of arguments (given 2, expected 1) from (irb):10:in `Array' from (irb):10 from /usr/bin/irb:11:in `<main>'
実態について
Arrayクラスのインスタンスメソッド…とかではなくKernelのArrayメソッドを呼んでおり、Arrayメソッドは
引数を配列(Array)に変換した結果を返します。 - module Kernel (Ruby 2.6.0)
とあるように引数で挙動が変わるメソッド。とてつもなく紛らわしい…。