当我查看Vagrant docs https://www.vagrantup.com/docs/networking/forwarded_ports.html时,它给出了一个这样的例子:
Vagrant.configure("2") do |config|
config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "tcp"
config.vm.network 'forwarded_port', guest: 2003, host: 12003, protocol: "udp"
end
但是,以下似乎也是有效的:
单引号
Vagrant.configure("2") do |config|
config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "tcp"
config.vm.network :forwarded_port, guest: 2003, host: 12003, protocol: "udp"
end
冒号前缀
{{1}}
这些语法的区别是什么?当你有变量like in puppet时,是否应该使用双引号?
冒号前缀语法是什么?这很令人困惑,因为该行上的其他关键字后缀有冒号。
是否有Vagranfiles的风格指南?
答案 0 :(得分:2)
免责声明:以下内容是有意表达的(我对此持保留意见)。但是所有样式指南也是如此。不要陷入思考背后的深层思考,只需做出选择并尝试保持一致即可。
长答案:似乎没有任何官方的Vagrant风格指南,但是由于它是Ruby编程语言,我们可以看看官方的Ruby风格指南...哦,等等,实际上Ruby也没有!这个可能是最受欢迎的一个,所以坚持下去:
'word'
),双引号("word"
)或符号(:word
)?简短地:使用双引号。
长答案:样式指南在单引号和双引号上是矛盾的:it offers you choice A and B,因此请坚持使用Vagrant文档:
默认情况下使用双引号:
node.vm.provision "shell", inline: "echo hello from node #{i}"
如果双引号是字符串的一部分,请使用单引号。此snippet from Vagrant documentation与style guide一致:
config.winssh.export_command_template = '$env:%ENV_KEY%="%ENV_VALUE%"'
简短地说:冒号标记为symbol
(see Ruby documentation)。
此答案进一步扩展:What is the colon operator in Ruby?
symbols
?短暂地:(实际上)从不。
长答案:坚持使用双引号保持一致,除非您在Vagrant解析Vagrantfile时遇到可变性或性能问题。有关Ruby中符号和字符串的性能和可变性的更多信息:The Difference Between Ruby Symbols and Strings。
答案 1 :(得分:0)
Vagrantfile是一个ruby脚本,所以它遵守ruby规则。
使用双引号的主要优点之一是您需要string interpolation