久々にRubyのお話です。
クラスを作る際に可変長の変数をもたせたい場合は、空Hashのデフォ値を持った引数を設定しておきます。
こうすれば、Hashを渡してあげれば内容を参照できますし、駄目な値なら弾く事ができます。
実際のところ
デバッグ情報なんかを付加したいときには使えますね。
class Sample attr_accessor :val attr_reader :flag def initialize(val, params = {}) @val = val if params[:flag] @flag = true end end end a = Sample.new(42) b = Sample.new(12, {flag: true}) p a.flag #=> nil p b.flag #=> true
Hash以外の値を渡せばエラーで止まります。
c = Sample.new(42, 11) #2> class.rb:6:in `[]': no implicit conversion of Symbol into Integer (TypeError)