2014-01-07 93 views
1

我是Ruby的新手,我試圖理解這種語法,所以我可以轉換爲Groovy。 https://gist.github.com/brettporter/1723108瞭解Ruby分配語法

state = :body 

conflict = { 
      :lineno => index + 1 
} 

conflict[:left_conflict] 

正態,並用身體和LINENO和left_conflict領域的衝突對象? 如果是這樣,left_conflict字段如何填充/分配一個值? 什麼在Groovy的

這樣

回答

2

這些在Ruby中是symbols

state = :body 

設置可變state是符號:body

Groovy的不具有符號(見here),所以一個可能的Groovy替代這些是隻使用字符串作爲像的狀態和地圖鍵:

// Just use a String to maintain our state 
state = 'body' 

// Create a map 
conflict = [ lineno: index + 1 ] 

// get a value from a map 
conflict[ 'left_conflict' ] 

這可能是明智的,把這些神奇的字符串成某種最終的靜態變量

3

Assignment的等效方式:

在Ruby分配使用=(等號)字符。這個例子中,數字5分配給本地變量v:如果變量以前未引用

V = 5

分配創建一個局部變量。

state = :body是帶一個Symbol實例:body一個局部變量賦值。

符號對象表示Ruby解釋器中的名稱和一些字符串。他們正在使用的:name:"string"文字語法生成,並且由各個to_sym方法

也是一個局部變量,其被保持Hash對象。

conflict[:left_conflict],這裏我們使用方法Hash#[]通過其關鍵字:left_conflict訪問哈希值。 :left_conflict是散列對象的一個​​關鍵字,它被局部變量保存。

+1

好解釋的。 – unknownbits