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

时间:2016-08-11 18:42:43

标签: ruby syntax symbols

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

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

似乎我无法使用数字开始2grok ..有没有办法逃避这个,或者使用正确的语法' 2grok'?

2 个答案:

答案 0 :(得分:5)

如果要使用数字开始符号,则需要将其括在引号中:

:'2grok' => ['Hi']

如果你使用双引号,ruby interpolates字符串在里面:

:"#{1 + 1}grok"

此外,您可以使用percent-notation

%s{2grok}

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

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

答案 1 :(得分:2)

Mladen的回答在Ruby方面是正确的。您只能使用引号在符号名称的开头使用数字。请记住,您还必须使用它们来访问哈希值。但是不应该使用符号来定义cookbook中的属性。 Chef Style Guide recommends using strings instead