Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – 何时使用undef_method,何时使用remove_method?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想重新定义一个方法,但是避免与之相关联的警告.@R_293_10675@用undef_method还是remove_method这样做?

(是的,重新定义方法有点恶作剧,我这样做是因为在运行单元测试时我想要使用一些记忆,而不是运行程序时).

解决方法

fine manual

所以这样一个remove_method:

@H_874_10@class CC < C remove_method :m end

基本上与此相反:

@H_874_10@class CC < C def m end end

其中,def将方法m添加到类中,remove_method:m删除m.但是,如果超类有一个m方法,那么仍然会被使用.

undef_method,OTOH,更像是这样:

@H_874_10@class CC < C def m raise 'No,you cAnnot do that.' end end

所以undef_method实际上并没有删除该方法,它会使用一个特殊的内部标志替换该方法,如果您尝试调用该方法,则会引起Ruby的抱怨.

听起来你正在尝试替换一个现有的方法,而替换在语义上与删除相同,后跟一个add,因此remove_method可能更合适.然而,如果你想要偏执,并确保替换方法到位,那么undef_method将是有用的;或者,如果由于某种原因,您需要在一个地方删除该方法并将其添加到另一个位置,则undef_method至少会告诉您,您只做了一半的工作,而remove_method会让您离开超级类的实现(和可能的奇怪的错误)或者一个比较混乱的NoMethodError.

大佬总结

以上是大佬教程为你收集整理的ruby – 何时使用undef_method,何时使用remove_method?全部内容,希望文章能够帮你解决ruby – 何时使用undef_method,何时使用remove_method?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。