好吧,所以这让我发疯了。这段代码的重点是我应该能够动态添加一个方法,只要它的形式为 object.plusnum,其中 num 是任意数字。我不太确定如何让它工作。这是迄今为止我最好的尝试,但我目前遇到了几个错误。
代码:
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”未定义。我对元编程和 ruby 很陌生,这让我发疯。