`:provider => 'value'` 和 `provider: 'value'` 的区别
Difference between `:provider => ' value '` and `provider: 'value'`
为了描述载波配置的散列,我这样写:
{
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"],
}
两者有什么区别?有充分的理由使用其中之一吗?
没有区别。
nitz@comp:~$ irb
irb(main):001:0> {a:1}
=> {:a=>1}
这是一种新语法,用于指定带有作为符号的键的散列,这是定义散列的 "normal" 方式(据我所知)。
另见 What are the benefits of the new hash syntax in Ruby 1.9?
此 "JSON" 语法已添加到 ruby 1.9 http://effectif.com/ruby/update-your-project-for-ruby-19-hash-syntax
唯一的区别是你不能用它做破折号之类的事情:
:'foo-moo' => 2
这是ruby1.9+的新语法,只是一个语法糖而已。
http://breakthebit.org/post/8453341914/ruby-19-and-the-new-hash-syntax
我更喜欢使用新语法,因为在不久的将来可能会弃用旧语法。
为了描述载波配置的散列,我这样写:
{
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"],
}
两者有什么区别?有充分的理由使用其中之一吗?
没有区别。
nitz@comp:~$ irb
irb(main):001:0> {a:1}
=> {:a=>1}
这是一种新语法,用于指定带有作为符号的键的散列,这是定义散列的 "normal" 方式(据我所知)。
另见 What are the benefits of the new hash syntax in Ruby 1.9?
此 "JSON" 语法已添加到 ruby 1.9 http://effectif.com/ruby/update-your-project-for-ruby-19-hash-syntax
唯一的区别是你不能用它做破折号之类的事情:
:'foo-moo' => 2
这是ruby1.9+的新语法,只是一个语法糖而已。
http://breakthebit.org/post/8453341914/ruby-19-and-the-new-hash-syntax
我更喜欢使用新语法,因为在不久的将来可能会弃用旧语法。