ruby - 如何获得 JavaScript 样式的哈希访问?

标签 ruby object hash

我知道 ActiveSupport 提供了此功能。

h = ActiveSupport::OrderedOptions.new
h.boy = 'John'
h.girl = 'Mary'
h.boy  # => 'John'
h.girl # => 'Mary'

但是我已经有一个很大的散列,我想使用点表示法访问该散列。这是我尝试过的:

large_hash = {boy: 'John', girl: 'Mary'}
h = ActiveSupport::OrderedOptions.new(large_hash)
h.boy # => nil

那没有用。我怎样才能使这项工作。

我正在使用 ruby 1.9.2

更新:

抱歉,我应该提到我不能使用 openstruct,因为它没有 Struct 所具有的 each_pair 方法。我事先不知道 key ,所以我不能使用 openstruct。

最佳答案

OpenStruct应该可以很好地解决这个问题。

如果你想看看它是如何工作的,或者可能制作一个定制版本,从这样的事情开始:

h = { 'boy' => 'John', 'girl' => 'Mary' }

class << h
  def method_missing m
    self[m.to_s]
  end
end

puts h.nothing
puts h.boy
puts h.girl

关于ruby - 如何获得 JavaScript 样式的哈希访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934331/

相关文章:

ruby-on-rails - 使用带有哈希的 def_delegate

ruby-on-rails - 查找没有 id 的元素进行 Capybara 测试

java - Rhino 在 Java 中评估 javascript 对象

ruby - Ferret 是否足够稳定以用于生产?

class - 类片段和对象片段之间的区别

object - 如果 vue.js 2 上的对象为空,如何添加条件?

java - MD5 哈希对于大字符串失败

python - 字典、集合还是卡住集合?

算法复杂性和安全性 : MD5 or SHA1?

ruby-on-rails - Rails - 如何创建字母系统?