【发布时间】:2016-12-18 15:22:28
【问题描述】:
我是 ruby 和 Chef 的新手,在我的食谱中定义属性时遇到了语法问题。下面是相关代码:
default[:my_cookbook][:stuff] = {
:foo_bar => {
:grok => ['Hi'],
:2grok => ['Bye'],
...
看来我不能使用数字来开始 2grok.. 有没有办法避免这种情况,或者使用 '2grok' 的正确语法是什么?
【问题讨论】:
我是 ruby 和 Chef 的新手,在我的食谱中定义属性时遇到了语法问题。下面是相关代码:
default[:my_cookbook][:stuff] = {
:foo_bar => {
:grok => ['Hi'],
:2grok => ['Bye'],
...
看来我不能使用数字来开始 2grok.. 有没有办法避免这种情况,或者使用 '2grok' 的正确语法是什么?
【问题讨论】:
如果要以数字开头的符号,则需要将其括在引号中:
:'2grok' => ['Hi']
如果你使用双引号,ruby interpolates 字符串里面:
:"#{1 + 1}grok"
另外,你可以使用percent-notation:
%s{2grok}
最后,您可以通过在 String 上调用 to_sym 方法来获取符号:
'2grok'.to_sym => ['Hi']
【讨论】:
就 Ruby 而言,Mladen 的回答是正确的。您只能使用引号在符号名称的开头使用数字。请记住,您也必须使用它们来访问哈希值。但是,您不应该使用符号来定义食谱中的属性。 Chef Style Guide recommends using strings instead.
【讨论】: