Code Fix

上級coerce未実装のクラスと数値を演算すると TypeError になる › パターン3

coerce未実装のクラスと数値を演算すると TypeError になる

自作クラスのインスタンスを 数値 + 自作オブジェクト の順で演算すると、Integer側の+が呼ばれます。

 1  class Length
 2    attr_reader :cm
 3    def initialize(cm)
 4      @cm = cm
 5    end
 6    def +(other)
 7      Length.new(cm + other.cm)
 8    end
 9  end
10  
11  total = ______________________________
                           ^
12  puts total.cm
main.rb:11:in `+': Length can't be coerced into Integer (TypeError) from main.rb:11:in `<main>'

空欄を埋めて実行を通す

広告
広告スロット(未設定)

coerce未実装のクラスと数値を演算すると TypeError になる

Integerは自作クラスの値をどう数値として扱えばよいか分からないため、そのクラスにcoerceメソッドが定義されていない限りTypeErrorになります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)