2013-02-01 71 views
-1

我可以在ruby中引入基于缩进的哈希么?像coffescript哈希。基于缩进的Ruby哈希

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

不,你不能那样做。 –

+0

所有的解决方案都被我看到使用'预处理'技术。 – FUT

回答

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"}}]} 
4

不是直接的,但我想你想YAML

+0

当然,我想过这个解决方案,但我的目标是将最简单的哈希定义和ruby代码合并到单个文件中。谢谢! – FUT

+1

@FUT:那么你可以为ruby编写一个coffeescript模拟,使用基于缩进的语法和whatnot。命名为祖母绿或类似的东西:) –

+0

@SergioTulentsev好笑话! :d – FUT

0

如果你眯双眼,许下一个愿望,然后常规语法有点类似于你正在寻找的东西。

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