我有以下代码:
update_using(&add_tabs_before_every_description_line, &add_tabs_before_every_photo_description_line, &add_links_to_photo_descriptions)
其中三个参数是声明如下的lambda表达式:
add_tabs_before_every_description_line = lambda do |mutable_viewable_gallery|
mutable_viewable_gallery.description = add_tabs_before_every_line(mutable_viewable_gallery.description, 2)
return mutable_viewable_gallery
end
它无法工作,我无法将可变数量的lambdas传递给update_using,其声明如下:
def update_using(*args)
我得到的错误正是关于传递多个lambda。它只需要一个然后是一个结束括号,而不是一个逗号。一旦我删除&符号,语法错误就会消失,但是然后update_using它不会将它视为lambda。
generate_gallery.rb:50:语法错误,意外',',期待')' ..._ before_every_description_line,& add_tabs_before_every_photo ... ......
我希望能够将可变数量的lambdas传递给update_using。我做错了什么?
答案 0 :(得分:1)
使用&
运算符,将lambda(或其他可以转换为proc的proc或对象)作为块传递给方法。现在,你不能在块参数之后传递任何参数(所以你也不能将多个块传递给方法)。我想你应该将你的lambdas作为'常规'参数传递,而不是&
:
update_using(add_tabs_before_every_description_line, add_tabs_before_every_photo_description_line, add_links_to_photo_descriptions)