У меня есть серьезные проблемы, чтобы понять блоки с аргументами. Я хотел бы использовать такого рода рубинового код:Вложенные блоки с аргументами в Ruby
FooBar.foo do |foo_arg|
bar do |bar_arg|
define_method :hello!, foo_arg, bar_arg do
"Hello, #{foo_arg} and #{bar_arg}!"
end
end
end
include FooBar
hello!(:Alice, :Bob) # => "Hello, Alice and Bob!"
И сделать это так, я добавил thoses линии:
module FooBar
def self.foo &foo_block
instance_eval &foo_block
end
def self.bar &bar_block
instance_eval &bar_block
end
end
Но поскольку споры между трубами являются события, у меня есть синтаксис ошибка. Спасибо за любую помощь!
Можете ли вы опубликовать свой фактический код? У этого нет никаких проблем с этим. – robbrit
Вы вызываете 'instance_eval', но ничего не передаете блоку, так что вы ожидаете от' foo_arg'? Кроме того, 'define_method' должен иметь только один аргумент. Остальные должны быть частью поставляемого блока: 'define_method (: hello!) Do | foo_arg, bar_arg |'. – tadman
Где вы получаете 'SyntaxError'? Что такое * точная формулировка 'SyntaxError', которую вы получаете? «Вот какой-то код, в нем есть некоторая ошибка, но я не собираюсь рассказать вам, что такое ошибка» не так уж и много. –