一种在ruby中动态添加字段到struct的方法

mas*_*ily 2 ruby struct metaprogramming

假设我的结构包含以下字段:first_name,last_name,phone

Contact = Struct.new :first_name, :last_name, :phone
Run Code Online (Sandbox Code Playgroud)

现在我想动态添加另一个名为:email的字段.

是否有捷径可寻?

Jer*_*ert 6

Ruby的OpenStruct似乎最适合这个用例.

require 'ostruct'
...
contact = OpenStruct.new(first_name: "John", last_name: "Doe", phone: "XXXXXXX")
Run Code Online (Sandbox Code Playgroud)

后来你可以做到

contact.email = "john.doe@mymail.com"
Run Code Online (Sandbox Code Playgroud)