0

可能重复:分配
之间有什么区别吗?:key => "value"key: "value"
键入红宝石新哈希

我正在阅读一些 Rails 代码,我看到可以调用一个方法

foo(:var1 => 'hello', :var2 => 'world')

或者

foo(var1: 'hello', var2: 'world')

两者的工作方式似乎完全相同。有什么区别吗?哪个是更好的做法?

4

2 回答 2

3

他们的意思是一样的。后者是受 JavaScript 启发的新 Ruby 1.9 语法。如果您需要与 Ruby 1.8 保持兼容,请使用前者。否则就是口味问题。

于 2012-07-20T21:38:31.810 回答
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 }
于 2012-07-21T02:29:10.947 回答