我正在阅读一些 Rails 代码,我看到可以调用一个方法
foo(:var1 => 'hello', :var2 => 'world')
或者
foo(var1: 'hello', var2: 'world')
两者的工作方式似乎完全相同。有什么区别吗?哪个是更好的做法?
我正在阅读一些 Rails 代码,我看到可以调用一个方法
foo(:var1 => 'hello', :var2 => 'world')
或者
foo(var1: 'hello', var2: 'world')
两者的工作方式似乎完全相同。有什么区别吗?哪个是更好的做法?
他们的意思是一样的。后者是受 JavaScript 启发的新 Ruby 1.9 语法。如果您需要与 Ruby 1.8 保持兼容,请使用前者。否则就是口味问题。
在方法调用中,两者的工作方式完全相同,但是当您进行哈希时,它们会有所不同
# 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 }