初めてのRuby − 3.2.5 型と自動変換(coerce規約と method_missing を使った四則演算)
coerce 規約
整数と浮動小数点数の演算は自動的に型変換されるが、処理系ハードコードによるものではなく、coerce規約というメカニズムに従うとのこと。
で、適当な自作クラスでの型変換を試してみる。
次のコードで作った coerce メソッドがそれ。
非常に簡単な例ですが。
ここではまた、method_missing を定義して、四則演算させてます。
#! ruby -Ks class MyClass def initialize(value = 0) @value = value end def coerce(number) [number, @value] end def method_missing(name, *arg) case name when :+, :-, :*, :/, :** eval "#{@value} #{name} #{arg[0]}" else raise "#{name}" end end end v = MyClass.new(10) puts "v と定数の演算", v + 5, v - 5, v * 10, v / 2, v ** 10 puts "定数と vの演算", 5 + v, 5 - v, 10 * v, 20 / v, 5 ** v