在Struct实例中创建动态属性

ole*_*ole 5 ruby

是否可以在Struct实例中创建动态属性?

class Person < Struct.new(:name)
end

p = Person.new("Bilbo")
p[:surname] = "Jenkins" # does not work
Run Code Online (Sandbox Code Playgroud)

Aug*_*ust 3

你可以使用OpenStruct:

require 'ostruct'

p = OpenStruct.new(name: "Bilbo")
p[:surname] = "Jenkins"

p.surname # => "Jenkins"
Run Code Online (Sandbox Code Playgroud)