hash2class.rb
Heads up: This description was created by AI and might not be 100% accurate.
This Ruby code snippet demonstrates dynamic class creation. It takes a hash (data) and creates a new class whose attributes are dynamically defined based on the hash keys. The create_dynamic_class method defines accessors (using attr_accessor) and an initialize method to set instance variables corresponding to the hash keys and values. An instance of the dynamically created class (obj) is then created and its attributes can be accessed like any other object’s attributes (e.g., obj.name, obj.age).
Ruby code snippet
data = { name: "Alice", age: 25, city: "Tokyo" }
#=> {name: "Alice", age: 25, city: "Tokyo"}
def create_dynamic_class(hash)
Class.new do
hash.each_key do |key|
attr_accessor key.to_sym
end
define_method(:initialize) do
hash.each do |key, value|
instance_variable_set("@#{key}", value)
end
end
end
end
#=> :create_dynamic_class
kls = create_dynamic_class data
#=> #<Class:0x00007f2b2665dc10>
obj = kls.new
#=>
#<#<Class:0x00007f2b2665dc10>:0x00007f2b266f83f0
obj
#=>
#<#<Class:0x00007f2b2665dc10>:0x00007f2b266f83f0
@age=25,
@city="Tokyo",
@name="Alice">
obj.name
#=> "Alice"
obj.age
#=> 25
obj.city
#=> "Tokyo"
Executed with Ruby 3.4.7.