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可以用于从继承的类包装方法,添加一些功能,但保留结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |