Извините, но мне трудно понять, что именно вы спрашиваете.И я не уверен, что вы правильно используете некоторые термины, например, что вы подразумеваете под "методами области видимости"?Вы имеете в виду метод класса против метода экземпляра?Это относится к области.
И когда вы говорите «цепочка», вы имеете в виду вызывать один метод за другим?Как и так?
f = Foo.new
puts f.method1(some_value).method2(some_other_value)
Я просто прокомментирую, что ваша не очень динамичная часть выше может быть написана:
method_action << ".#{prefix}"
Я не вижу никакой реальной цепочки в вашем вопросе, поэтому я 'Я не уверен, что вы просто хотите объединить строки для динамического построения имен.Если вы действительно хотите связать методы, вы должны помнить, что вам всегда нужно возвращать self в конце метода, который вы хотите сделать цепочкой обратно в этот класс.
Например:
class Foo
def method1(value)
puts "method1 called with #{value}"
self
end
def method2(value)
puts "method2 called with #{value}"
self
end
end
f = Foo.new
puts f.method1("Hello").method2("World").method1("I can").method2("do this").method2("all").method1("day!")
Будет выводить:
method1 called with Hello
method2 called with World
method1 called with I can
method2 called with do this
method2 called with all
method1 called with day!
#<Foo:0x0000010084de50>