我正在创建一个包装器食谱,同时尝试使用Rubocop和Foodcritic将自己限制为正确的格式。但是,我经常遇到以下错误:
Use strings in preference to symbols to access node attributes
和
Access node attributes in a consistent manner
这让我想知道,冒号和引号之间有区别吗?
答案 0 :(得分:0)
是的...冒号用于定义符号,而字符串由引号定义... so:
:variable1
是名为variable1
:'variable is 1'
是一个符号
'variable1'
- 是一个字符串
"variable#{1}"
- 是一个可以在其中定义变量的字符串。双引号解释字符串,而单引号按原样使用字符串。
和
'variable1'.to_sym与:variable1
相同答案 1 :(得分:0)
正如Sid的回答中所提到的,:foo
是一个符号,"foo"
和'foo'
是字符串。对于节点属性,我们会自动为您转换内容,因此两种样式都可以使用Foodcritic规则用于确保所有Chef代码的一致风格。如果您没有理由不这样做,我们建议使用字符串样式作为引用字符串在许多编程语言中很常见,因此更容易被更少Ruby的读者理解。