申し訳ありませんが、これは私を狂ってしまいます。このコードのポイントは、object.plusnumという形式のメソッドを動的に追加できることです。numは任意の数です。私はこれをどのように動作させるかについてはあまりよく分かりません。これはこれまでの私の最高のショットですが、私は現在いくつかのエラーが発生しています。Rubyのメタプログラミングエラー
コード:
class Adder
def initialize(_val)
@start_value = _val
end
def method_missing(method_name, *args)
method = method_name.to_s
if method.start_with?("plus") then
num = method[4 .. method.length]
if (/^[\d]+(\.[\d]+){0,1}$/ === num) then
number = Integer(num)
self.class_eval("def #{method} return @start_value + #{number} end")
else
super
end
else
super
end
end
end
私は現在取得していますエラーは、 "class_evalメソッド" は未定義であるということです。私はmetaprogrammingとrubyにかなり新しいです、そして、これは私を夢中にしています。