引号和厨师属性中的冒号有什么区别?

时间:2016-09-28 21:43:41

标签: ruby chef chef-recipe chefdk

我正在创建一个包装器食谱,同时尝试使用Rubocop和Foodcritic将自己限制为正确的格式。但是,我经常遇到以下错误:

Use strings in preference to symbols to access node attributes

Access node attributes in a consistent manner

这让我想知道,冒号和引号之间有区别吗?

2 个答案:

答案 0 :(得分:0)

是的...冒号用于定义符号,而字符串由引号定义... so:

:variable1是名为variable1

的符号

:'variable is 1'是一个符号

'variable1' - 是一个字符串

"variable#{1}" - 是一个可以在其中定义变量的字符串。双引号解释字符串,而单引号按原样使用字符串。

'variable1'.to_sym与:variable1

相同

答案 1 :(得分:0)

正如Sid的回答中所提到的,:foo是一个符号,"foo"'foo'是字符串。对于节点属性,我们会自动为您转换内容,因此两种样式都可以使用Foodcritic规则用于确保所有Chef代码的一致风格。如果您没有理由不这样做,我们建议使用字符串样式作为引用字符串在许多编程语言中很常见,因此更容易被更少Ruby的读者理解。