0
這個問題有點難以言表,但這裏有個想法。我希望能夠做這樣的事情:需要一個能夠從塊中生成其他類的類
A=M.make {|x| x+1}
B=M.make {|x,y| x+y}
a=A.new
b=B.new
a.eval(1) #returns 2
b.eval(1,2) #returns 3
這裏是類我迄今,這是行不通的。
class M
def self.make &blk
Class.new do
@@blk=blk
def eval *args
@@blk.call(*args)
end
end
end
end
如果我這樣做,這是我得到的。
a.eval(1) #error
a.eval(1,2) #3
a.eval(1,2) #3
很明顯,它看起來像這是一個範圍問題,但它是我不知道如何解決的問題。理想情況下,我希望每個從M創建的類實例化的類都擁有自己的作用域,當然,還需要寫eval func!
感謝