変数が配列であるかどうかを確認する必要があります。そうでない場合は、さらに処理を進める前に、変数を配列に変換する必要があります。したがって、私のコードは次のようになります。
class Test < Struct.new(:args)
def eval
p "1. #{args}"
args = (args.instance_of? Array) ? args : [args]
p "2. #{args}" # woah! [nil]?
# ...other things, with "args" being an array for sure..or not?!?
end
end
私はルビーにまったく慣れていないので、おそらくこれはあまり慣用的ではありませんが、私にはこのコードは少なくとも機能するはずです。代わりに、2回目にargs
変数を出力すると、です[nil]
。メソッドをeval
少し変更すると、次のことに注意してください。
def eval
p "1. #{args}"
a = args
args = (a.instance_of? Array) ? a : [a]
p "2. #{args}"
end
すべてが期待どおりに機能します。それで、私が理解できないStructクラスに非常に固有の何かがありますか、それともここで何か怪しいことが起こっていますか?(macosxでruby 1.9.3-devを使用し、rvmを使用)