2014-01-07 60 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