Rails 3中的tap方法 - 我是否正确理解了API Docs?

时间:2012-04-07 17:46:46

标签: ruby-on-rails ruby ruby-on-rails-3.2

我正在将rails 2应用程序升级到rails 3.2,并且遇到了所谓的习语。

person.tap |p| do

当我用Google搜索并it appears to have been deprecated or moved时。我的理解是否正确?

我问,因为我可以在SO上找到一些例子。

2 个答案:

答案 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的一部分。