好的,所以這讓我瘋狂。這段代碼的意義在於,我應該能夠動態添加一個方法,只要它的形式爲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」 是不確定的。我對元編程和紅寶石很新,而這讓我瘋狂。