我注意到 Ruby 的理念是在运行时保持尽可能多的灵活性。
这是一个典型的(据我所知)Ruby 结构定义:
    Person = Struct.new("Person", :name, :address)
    Person.new("John", "Chicago, IL")
我的问题是,当结构字段/成员列表也在运行时定义时,是否可以在运行时定义结构?看起来像这样的东西:
    Person = Struct.new("Person", list_of_structure_fields)
你可以直接splat一个数组:
fields = [:name, :address]
Person = Struct.new("Person", *fields)
Person.new("John", "Chicago, IL")
#=> #<struct Struct::Person name="John", address="Chicago, IL">
这可以让你做一些有趣的事情:
person = {name: "John", address: "Chicago, IL"}
Person = Struct.new("Person", *person.keys)
Person.new(*person.values)
#=> #<struct Struct::Person name="John", address="Chicago, IL">