在本文中,我們將討論如何將哈希轉換為對象紅 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?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。