2013-02-01 109 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'}}