这段代码片段来自plataformecs gem simple_form,wiki部分关于"添加自定义输入":
out << template.image_tag(object.send(attribute_name).tap {|o| break o.send(version) if version}.send('url'))
Run Code Online (Sandbox Code Playgroud)
问题只是代码在.tap {}之后阻塞了什么?特别是最初的"休息"对我来说很奇怪.
break argument在块中导致块返回argument.默认情况下,tap返回给定的相同对象,但中断将导致它返回任何o.send(version) if version计算结果.