私の研究は、ここに無限再帰を引き起こすものがあることを示しているようですが、わかりません。誰かが間違っていることを指摘できますか?スタックレベルが深すぎますが、正確に何が無限再帰を引き起こしているのかわかりません
def initialize(_val)
@start_value = _val
end
def method_missing(method, *args)
if method.starts_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 + x; end")
self.plus(number)
else
super.method_missing
end
else
super.method_missing
end
end
end
これは奇妙です。私はあなたのコードがSymbolに 'starts_with? 'を呼び出すためのNoMethodErrorをすぐにスローすることを期待しています。また、あなたは 'super'を間違って使用しています - それは単に' super'でなければなりません。 '.method_missing'を追加することによって、スーパークラスの' method_missing'を呼び出した結果に対して 'method_missing'を呼び出しています。 – sepp2k