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를 작성하고 싶습니다.
감사