Ruby语法,在符号中使用数字?

Ruby语法,在符号中使用数字?,ruby,syntax,symbols,Ruby,Syntax,Symbols,我是ruby和Chef的新手,在我的食谱中定义属性时遇到了语法问题。以下是相关代码: default[:my_cookbook][:stuff] = { :foo_bar => { :grok => ['Hi'], :2grok => ['Bye'], ... 似乎我不能用数字来开始2grok。。有没有办法避免这种情况,或者使用“2grok”的正确语法是什么?如果要以数字开头符号,需要将其括在引号中: :'2grok' => ['Hi'] 如果使用双引号,则内部为ru

我是ruby和Chef的新手,在我的食谱中定义属性时遇到了语法问题。以下是相关代码:

default[:my_cookbook][:stuff] = {
:foo_bar => {
:grok => ['Hi'],
:2grok => ['Bye'],
...

似乎我不能用数字来开始2grok。。有没有办法避免这种情况,或者使用“2grok”的正确语法是什么?

如果要以数字开头符号,需要将其括在引号中:

:'2grok' => ['Hi']
如果使用双引号,则内部为ruby字符串:

:"#{1 + 1}grok"
此外,您还可以使用:

最后,您可以通过对字符串调用方法来获取符号:

'2grok'.to_sym => ['Hi']

就Ruby而言,姆拉登的答案是正确的。只能使用引号在符号名称的开头使用数字。请记住,您也必须使用它们来访问散列中的值。但是,你不应该在食谱中使用符号来定义属性

'2grok'.to_sym => ['Hi']