红宝石产量和回报同时存在于一种方法中

时间:2011-12-14 09:38:36

标签: ruby

点击方法中有yield selfself是什么意思。 我认为只有yield self就足够了 以下代码来自Github faraday.rb

class Object
  def tap
    yield self
    self
  end unless Object.respond_to?(:tap)
end

1 个答案:

答案 0 :(得分:3)

yield selfself传递给阻止tap的阻止,而最后的selftap返回的。这正是tap的要点,使用块中的对象并仍然能够将其传递给链中的下一个方法。但请注意,如果块方法具有破坏性,则会传递修改后的版本。我个人试图避免这种情况,因为我主要使用tap进行调试。