基于缩进的Ruby哈希

时间:2013-02-01 13:16:41

标签: ruby-on-rails ruby hash syntax indentation

我可以在ruby中引入基于缩进的哈希吗?像coffeescript哈希这样的东西。

a: 1
  b: 
    c: 3
    d: 4
  e:
    f: 'qwe'

3 个答案:

答案 0 :(得分:4)

不直接,但我认为你喜欢YAML

答案 1 :(得分:1)

是的,您可以实现一个方法来使用缩进作为分隔符来解析字符串中的哈希值,或者像@AJcodez建议的那样:

require 'psych'
require 'yaml'

yash = <<EOT  # type hashes like this
---
:a:
- 1
- :b:
    :c: 3
    :d: 4
  :e:
    :f: qwe
EOT

hash = YAML.load yash
=> {:a=>[1, {:b=>{:c=>3, :d=>4}, :e=>{:f=>"qwe"}}]}

答案 2 :(得分:0)

如果你眯着眼睛并许下愿望,那么常规语法就像你正在寻找的那样。

h = { a: 1,
        b:{ 
          c: 3,
          d: 4},
        e:{
          f: 'qwe'}}