У меня есть экземпляр мастер-класса, который генерирует экземпляры подкласса, эти подклассы должны перенаправлять вызовы некоторых методов обратно в мастер-экземпляр.
В данный момент у меня есть код, похожий на этот, но мне кажется, что я должен быть в состоянии сделать то же самое более эффективно (возможно, с method_missing?)
class Master
def initalize(mynum)
@mynum = mynum
end
def one_thing(subinstance)
"One thing with #{subinstance.var} from #{@mynum}"
end
def four_things(subinstance)
"Four things with #{subinstance.var} from #{@mynum}"
end
def many_things(times,subinstance)
"#{times} things with #{subinstance.var} from #{@mynum}"
end
def make_a_sub(uniqueness)
Subthing.new(uniqueness,self)
end
class Subthing
def initialize(uniqueness,master)
@u = uniqueness
@master = master
end
# Here I'm forwarding method calls
def one_thing
master.one_thing(self)
end
def four_things
master.four_things(self)
end
def many_things(times)
master.many_things(times,self)
end
end
end
m = Master.new(42)
s = m.make_a_sub("very")
s.one_thing === m.one_thing(s)
s.many_things(8) === m.many_things(8,s)
Надеюсь, вы сможете увидеть, что здесь происходит. Я бы использовал method_missing, но я не уверен, как справиться с возможностью того, что некоторые вызовы будут иметь аргументы, а некоторые нет (я также не могу изменить порядок аргументов в методах Master)
Спасибо за чтение!