为什么在这里使用tap方法?

Ada*_*Lee 2 ruby ruby-on-rails

在以下Rails代码中,

root.join('lib', 'assets', 'bower_components').to_s.tap do |bower_path|
  config.sass.load_paths << bower_path
  config.assets.paths << bower_path
end
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我们需要在这里使用tap

为什么不用

bower_path = root.join('lib', 'assets', 'bower_components').to_s
config.sass.load_paths << bower_path
config.assets.paths << bower_path
Run Code Online (Sandbox Code Playgroud)

使用水龙头有什么好处?

spi*_*ann 6

一个好处可能是tap返回调用它的对象.您的第二个版本与版本不完全相同tap.它与:

bower_path = root.join('lib', 'assets', 'bower_components').to_s
config.sass.load_paths << bower_path
config.assets.paths << bower_path
bower_path
Run Code Online (Sandbox Code Playgroud)

如果需要此功能,则取决于上下文.