ruby - 在 ruby​​ 中以散列形式返回结构数据

标签 ruby

没有将标准 ruby​​ 结构的数据作为散列(成员、值对)返回的方法是否有正当理由? 看到结构和散列具有非常相似的用例,我很惊讶不存在这样的方法。或者是,我太盲目了?

它很容易实现(我现在已经这样做了),但是标准库中缺少这样的功能,让我觉得我可能没有真正掌握 ruby​​ 中结构的概念。

最佳答案

Ruby <= 1.9.3 有 OpenStruct#marshall_dumpStruct#each_pair :

Person = Struct.new(:name, :age)
person = Person.new("Jamie", 23)
person_hash = Hash[person.each_pair.to_a]
#=> {:age=>23, :name=>"Jamie"}

Ruby 2.0 提供了 Struct#to_hOpenStruct#to_h :

Person = Struct.new(:name, :age)
person = Person.new("Jamie", 23)
person_hash = person.to_h
#=> {:age=>23, :name=>"Jamie"}

关于ruby - 在 ruby​​ 中以散列形式返回结构数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082423/

相关文章:

ruby-on-rails - 在 Rails 中上传文件

ruby - 在 Ruby 1.8 中支持 Ruby 1.9 的哈希语法

ruby-on-rails - 如何在我的测试中触发 Railtie 初始化程序?

ruby - 在 Ruby 中标记字符串?

ruby-on-rails - 鲁博警察。如果散列文字的元素跨越多行,则对齐它们

ruby-on-rails - Rails 4 混淆了我的一个引擎模型与另一个引擎库模块

ruby 轨道 : how to link employees table with devise authentification

javascript - rails 5 : Javascript not loading

ruby-on-rails - 安装 mysql2 (0.5.4) 时出错,Bundler 无法继续 - 在 Rails 项目中

ruby - 检查变量是否是 Ruby 中的字符串