`:provider =>之间的区别'价值'`和'提供者:'价值'`

时间:2016-02-21 11:51:19

标签: ruby hash literals

为了描述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"],
}

两者有什么区别?是否有充分理由使用其中一个?

3 个答案:

答案 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,因为较旧的语法可能会在不久的将来被弃用。