0

我想我曾经在 Rails 项目中看到过一个不错的解决方案。我认为这个解决方案是在 Rails 中构建的。

我想要得到的是一个类似哈希的对象,它做这样的事情:

jar = Jar.new #no defined methods 'name' in it!

jar.name #returns nil
jar.name = 'fu'
jar.name #return 'fu'

wherename可以是一切可能的事情,就像哈希一样。我不想预先定义它!

是否有一个助手类可以在 rails 或类似的东西中执行此操作?

4

2 回答 2

4

您可以使用 Ruby 核心中的 OpenStruct:

require 'ostruct'

person = OpenStruct.new
person.name    = "John Smith"
person.age     = 70
person.pension = 300

puts person.name     # -> "John Smith"
puts person.age      # -> 70
puts person.address  # -> nil

另外,请查看文档

于 2013-04-26T07:04:31.177 回答
1

您可以使用 openstruct:

require 'ostruct'
=> true 
o = OpenStruct.new
=> #<OpenStruct>
o.foo
=> nil 
o.foo= 1
=> 1 
o.foo
=> 1 
于 2013-04-26T07:04:20.463 回答