为了描述carrierwave配置的哈希,我写道:
{
provider: 'AWS',
aws_access_key_id: ENV["aws_access_key_id"],
aws_secret_access_key: ENV["aws_secret_access_key"],
}
然而,教程似乎是建议写的:
{
:provider => 'AWS'
:aws_access_key_id => ENV["aws_access_key_id"],
:aws_secret_access_key => ENV["aws_secret_access_key"],
}
两者有什么区别?是否有充分理由使用其中一个?
答案 0 :(得分:3)
没有区别。
nitz@comp:~$ irb
irb(main):001:0> {a:1}
=> {:a=>1}
这是一种新的语法,用于指定带符号的哈希值,这是定义哈希值的“正常”方式(据我所知)。
另请参阅What are the benefits of the new hash syntax in Ruby 1.9?
答案 1 :(得分:1)
这个“JSON”语法已添加到ruby 1.9 http://effectif.com/ruby/update-your-project-for-ruby-19-hash-syntax
中唯一的区别是你不能用破折号做事:
:'foo-moo' => 2
答案 2 :(得分:1)
它是ruby 1.9+的新语法,只是一种语法糖,而且都是。
http://breakthebit.org/post/8453341914/ruby-19-and-the-new-hash-syntax
我更喜欢使用new,因为较旧的语法可能会在不久的将来被弃用。