如果您更改文件然后在 pry 或 irb 中重新加载它,它似乎会拾取您添加到该类中的任何新功能,但不会忘记您从该类中删除的旧功能。
重现步骤:
- 使用单一方法创建一个类 - 例如。
say_hello
.
- 打开 PRY 或 IRB,并且
load 'my_class.rb'
- 编辑您的类 - 删除现有方法,并添加一个具有不同名称的新方法 - 例如。
say_goodbye
- 重新加载你的类 -
load 'my_class.rb'
您的两种方法现在都可用。我明白为什么会发生这种情况 - 因为 ruby 允许您重新打开类进行修改,重新加载文件基本上只是重新打开已加载的类的现有版本,而不是擦除该类的内存并定义班级又从头开始。
我的问题是,除了退出并重新启动 PRY 或 IRB 之外,您如何解决这个问题?你怎么说“完全忘记我以前的课程并从头开始重新加载这个文件”?
Thanks!
您可以使用删除常量 http://www.ruby-doc.org/core-2.1.5/Module.html#method-i-remove_const从其父类中删除该类,或者从Module
它位于:
My::Module.send(:remove_const, :MyClass)
or from Object
如果它没有在模块内声明:
Object.send(:remove_const, :MyClass)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)