我正在研究一个项目,我发现了一个有趣的问题。我想使用Struct
。我试着像这样使用它:
> e = Struct.new(:message, :whateve)
=> #<Class:0x007f881dd98b98>
e.message = "something"
NoMethodError: undefined method `message=' for #<Class:0x007f881dd98b98>
from (pry):5:in `__pry__'
如果我这样添加它可以正常工作:e = Struct.new(:message, :whateve).new
所以我想知道问题是什么并需要额外的新功能?我使用的是ruby 2.2.1p85。
答案 0 :(得分:4)
它发生了,因为Struct.new(:message, :whateve)
只定义了一个新类:
e = Struct.new(:message, :whateve) # define new class
e.class
#=> Class
e.new #define this class instance
#=> #<struct message=nil, whateve=nil>