我正在将rails 2应用程序升级到rails 3.2,并且遇到了所谓的习语。
person.tap |p| do
当我用Google搜索并it appears to have been deprecated or moved时。我的理解是否正确?
我问,因为我可以在SO上找到一些例子。
答案 0 :(得分:10)
tap
方法位于Ruby since 1.8.7:
点按{| x | ...} => OBJ 强>
为块产生
x
,然后返回x
。此方法的主要目的是“利用”方法链,以便对链中的中间结果执行操作。
请注意,1.8.6没有Object#tap
。据推测,tap
在旧版本的Rails中(作为Object
上的猴子补丁),但在1.8.7中被添加到Ruby本身。由于1.8.6现在相当古老,Rails版本已被弃用,并且在最近的Rails版本中,已完全删除。
Object#tap
仍然存在,因此tap
本身尚未弃用,只删除了Rails monkey修补版本。
答案 1 :(得分:4)
来自Object#tap
的{{1}}猴子补丁已弃用,因为它自1.9.0和1.8.7以来一直是Ruby的一部分。