在本文中,我们将讨论如何将哈希转换为对象红 gems 。将哈希转换为对象允许人们将哈希键作为对象属性进行访问,从而为他们提供了一种更直观的数据处理方式。
使用OpenStruct
OpenStruct是一个 Ruby 标准库,提供类似于 Hash 的数据结构,但能够将键作为属性进行访问。
用法:
require ‘ostruct’
object = OpenStruct.new(hash)
例子:
在此示例中,我们创建一个OpenStruct对象 person
来自包含有关人的信息的哈希。然后我们可以使用点表示法访问 person 对象的属性,使代码更具可读性。
require 'ostruct'
# Hash containing person information
person_hash = { name: 'John', age: 30, city: 'New York' }
# Convert hash to object using OpenStruct
person = OpenStruct.new(person_hash)
# Accessing attributes of the object
puts "Name: #{person.name}"
puts "Age: #{person.age}"
puts "City: #{person.city}"
输出
Name: John Age: 30 City: New York
使用结构体
Struct 是一个内置的 Ruby 类,允许您创建具有指定属性的新类。
用法:
ClassName = Struct.new(:attribute1, :attribute2, …)
object = ClassName.new(hash[:key1], hash[:key2], …)
例子:
在这个例子中我们定义了一个Struct类Person
有属性name
,age
, 和city
。然后,我们创建一个新对象person
从包含人员信息的哈希中,将每个值作为参数传递。
# Define a Struct class with attributes
Person = Struct.new(:name, :age, :city)
# Hash containing person information
person_hash = { name: 'John', age: 30, city: 'New York' }
# Convert hash to object using Struct
person = Person.new(*person_hash.values)
# Accessing attributes of the object
puts "Name: #{person.name}"
puts "Age: #{person.age}"
puts "City: #{person.city}"
输出
Name: John Age: 30 City: New York
U唱哈希#each
Hash#each 方法允许迭代哈希并动态定义对象的属性
用法:
object = Object.new
hash.each { |key, value| object.define_singleton_method(key) { value } }
例子:
在此示例中,我们创建一个新的空对象并迭代哈希。对于哈希中的每个键值对,我们动态地在对象上定义一个方法,以键作为方法名称,以值作为返回值。
# Hash containing person information
person_hash = { name: 'John', age: 30, city: 'New York' }
# Create an empty object
person = Object.new
# Define attributes dynamically from hash
person_hash.each { |key, value| person.define_singleton_method(key) { value } }
# Accessing attributes of the object
puts "Name: #{person.name}" # Output: Name: John
puts "Age: #{person.age}" # Output: Age: 30
puts "City: #{person.city}" # Output: City: New York
输出
Name: John Age: 30 City: New York
相关用法
- Ruby Hash.assoc()用法及代码示例
- Ruby Hash.compact用法及代码示例
- Ruby Hash.default_proc用法及代码示例
- Ruby Hash.delete()用法及代码示例
- Ruby Hash.delete_if用法及代码示例
- Ruby Hash.dig()用法及代码示例
- Ruby Hash.each用法及代码示例
- Ruby Hash.each_key用法及代码示例
- Ruby Hash.each_pair用法及代码示例
- Ruby Hash.each_value用法及代码示例
- Ruby Hash.fetch()用法及代码示例
- Ruby Hash.fetch_values()用法及代码示例
- Ruby Hash.flatten用法及代码示例
- Ruby Hash.insert()用法及代码示例
- Ruby Hash.invert用法及代码示例
- Ruby Hash.keep_if用法及代码示例
- Ruby Hash.keys用法及代码示例
- Ruby Hash.length用法及代码示例
- Ruby Hash.rassoc(obj)用法及代码示例
- Ruby Hash.rehash用法及代码示例
- Ruby Hash.reject用法及代码示例
- Ruby Hash.replace()用法及代码示例
- Ruby Hash.select用法及代码示例
- Ruby Hash.transform_keys用法及代码示例
- Ruby Hash.transform_values用法及代码示例
注:本文由纯净天空筛选整理自abhaystriver大神的英文原创作品 How to convert Hash to Object in Ruby?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。