可能重复:
Is there any difference between:key => "value"
andkey: "value"
assignments?
key in ruby new hash
我正在阅读一些rails代码,我看到一个方法可以被称为
foo(:var1 => 'hello', :var2 => 'world')
或
foo(var1: 'hello', var2: 'world')
两者似乎完全相同。有什么区别吗?哪种更好的做法?
答案 0 :(得分:3)
他们的意思是一样的。后者是受JavaScript启发的新的Ruby 1.9语法。如果您需要与Ruby 1.8保持兼容,请使用前者。否则这是一个品味问题。
答案 1 :(得分:0)
在方法调用中,两者的工作方式完全相同,但是当你创建哈希时,它们会有不同之处
# in a method call
foo( :param => 'p' )
# mean the same thing
foo( param: 'p' )
# but in a Hash construction, they will have diferences
# here the key will always be a Symbol
hash = { symb: value }
# but here the key can be anything
hash = { 1 => "1" }
hash = { "1" => 1 }