😊

【Ruby】クラス継承でエラーになった

に公開

クラスを継承したら初期化で引数エラーとなったのでその原因と対処をメモ。

エラーメッセージ
wrong number of arguments (given 3, expected 0..2) (ArgumentError)
引数の数が間違っています (3 が指定され、0..2 が予想されます) (引数エラー)

原因は、拡張したクラスの初期化で引数が必要でしたが親クラスでは引数不要であったためでした。
エラーとなるコード

class MyFrame < TkFrame
  def initialize(ex_name, ex_width, ex_value = 0)
    super
  end
end

対処は、親クラスの呼び出しで引数が無いことをカッコで明示することでした。
正常なコード

class MyFrame < TkFrame
  def initialize(ex_name, ex_width, ex_value = 0)
    super()  #<-- 引数が無いことをカッコで明示
  end
end

Discussion