区别:symbol =>与符号:

时间:2012-07-20 21:36:52

标签: ruby

  

可能重复:
  Is there any difference between :key => "value" and key: "value" assignments?
  key in ruby new hash

我正在阅读一些rails代码,我看到一个方法可以被称为

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

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

两者似乎完全相同。有什么区别吗?哪种更好的做法?

2 个答案:

答案 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 }