Ruby Struct.new不能按预期工作,它需要额外的.new

时间:2016-02-18 16:55:19

标签: ruby-on-rails ruby struct

我正在研究一个项目,我发现了一个有趣的问题。我想使用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。

1 个答案:

答案 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>