首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将散列转换为结构

将散列转换为结构
EN

Stack Overflow用户
提问于 2012-08-15 07:16:44
回答 12查看 24K关注 0票数 50

如何在ruby中将哈希值转换为结构体?

考虑到这一点:

代码语言:javascript
复制
h = { :a => 1, :b => 2 }

我想要一个这样的结构:

代码语言:javascript
复制
s.a == 1
s.b == 2
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-08-15 07:38:39

如果它不一定要是Struct,而是可以是OpenStruct

代码语言:javascript
复制
pry(main)> require 'ostruct'
pry(main)> s = OpenStruct.new(h)
=> #<OpenStruct a=1, b=2>
pry(main)> puts s.a, s.b
1
2
票数 69
EN

Stack Overflow用户

发布于 2014-10-01 07:22:54

如果您已经定义了一个struct,并且您希望使用散列实例化一个实例:

代码语言:javascript
复制
Person = Struct.new(:first_name, :last_name, :age)

person_hash = { first_name: "Foo", last_name: "Bar", age: 29 }

person = Person.new(*person_hash.values_at(*Person.members))

=> #<struct Person first_name="Foo", last_name="Bar", age=29>
票数 71
EN

Stack Overflow用户

发布于 2012-08-15 07:59:58

由于哈希键顺序在Ruby 1.9+中是有保证的:

代码语言:javascript
复制
Struct.new(*h.keys).new(*h.values)
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11962192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档