加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Super.tap {} – 它做什么和用例?

发布时间:2020-12-16 20:41:40 所属栏目:百科 来源:网络整理
导读:我遇到了一个宝石的建筑,不明白的意图. 我知道什么tap单独,但是为什么有人会叫super.tap {},而不是在超级调用后正常地继续执行代码. def my_method super.tap do |u| if @user @user.new_record? @omniauth = u.session[:session] u.session[:omniauth] = ni
我遇到了一个宝石的建筑,不明白的意图.
我知道什么tap单独,但是为什么有人会叫super.tap {},而不是在超级调用后正常地继续执行代码.
def my_method
 super.tap do |u|
    if @user && @user.new_record?
      @omniauth = u.session[:session]
      u.session[:omniauth] = nil unless @user.new_record?
    end
  end
end

任何人都可以启发我吗?

解决方法

super.tap只不过是在任何超级回报上调用tap方法.用户dmnd已经很好地解释了tap(为什么downwote?).超级调用你所覆盖的祖先类的方法.

因此,您粘贴的代码与以下内容相当:

original_result = super
if @user && @user.new_record?
  @omniauth = original_result.session[:session]
  original_result.session[:omniauth] = nil unless @user.new_record?
end
return original_result

基本上,super.tap可以用于从继承的类包装方法,添加一些功能,但保留结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读