假设有下面的类
# derp.rb
class Derp < Struct.new :id
end
When I load "./derp.rb"
程序失败两次TypeError: superclass mismatch for class Derp
。好的,这可以通过以下方式管理require
。但是我如何为每次使用 Spork 运行的测试重新加载这些类呢?require
显然不会工作,因为它会缓存加载的文件。
Struct.new
正在为您的每个负载创建新的类。
irb(main):001:0> class Test1 < Struct.new :id; end
nil
irb(main):003:0> class Test1 < Struct.new :id; end
TypeError: superclass mismatch for class Test1
from (irb):3
from /usr/bin/irb:12:in `<main>'
您可以保存您的Struct.new
回class
到一个变量和你
可以使用始终相同的class
.
irb(main):004:0> Id = Struct.new :id
#<Class:0x00000002c35b20>
irb(main):005:0> class Test2 < Id; end
nil
irb(main):006:0> class Test2 < Id; end
nil
或者你可以使用Struct.new
块样式而不是class
关键字它
只会给warning: already initialized constant Test3
当你
重新加载您的文件。
irb(main):023:0> Test3 = Struct.new(:id) do
def my_methods
"this is a method"
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)