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