在红宝石中你可以去
a = { }
a['a'] = 82
a['b'] = 'foo'
puts a['a'] # 82
我希望我能使用点符号,比如javascript。
puts a.a # 82
有没有办法在ruby中使用点表示法构建对象文字并访问它们?
答案 0 :(得分:14)
您可以创建Struct
。
A = Struct.new(:a, :b)
a = A.new(82, 'foo')
puts a.a
#=> 82
修改强>
你甚至可以做到a = { }
a['a'] = 82
a['b'] = 'foo'
Struct.new(*a.keys).new(*a.values)
答案 1 :(得分:5)
您需要的结构是OpenStruct
,其工作方式与JS对象文字相同。它覆盖了method_missing
方法,允许使用setter方法添加新变量。
答案 2 :(得分:2)
Ruby没有对象文字。
Ruby是一种基于类的面向对象语言。每个对象都是一个类的实例,类负责创建自己的实例。你不仅仅通过写下它们来创建对象,你必须通过向它发送一条消息(通常称为new
)来要求类创建自己的实例,尽管这只是一种惯例。