有什么区别:foo => :bar和foo :: bar?

时间:2014-02-14 14:51:10

标签: ruby

:foo => :barfoo: :bar之间有什么区别?

我是否应该使用其中一种?

有哪些优点/缺点?

编辑:为了防止这不是重复。

由mods链接的问题/答案不是:

  • 评论常规性使用哪种风格,我认为这是决定使用其中一种重要因素。
  • 在我的问题中说明值为符号
  • 哪个版本的Ruby 开始使用新样式

1 个答案:

答案 0 :(得分:3)

如果您运行的是支持foo: :bar表示法的Ruby版本(v.1.9 +),则大部分时间没有区别。

优点/缺点主要是程序员首选项,除了我们经常使用的复杂键:"foo bar",但新语法不支持:

ash = {:'foo foo' => 1}
=> {:"foo foo"=>1}
irb(main):002:0> hash = {'foo foo': 1}
SyntaxError: (irb):2: syntax error, unexpected ':', expecting =>

否则,您可以使用对您感觉更好的方式。我建议你不要混淆它们,因为这会变成可读性,然后是维护问题。

在工作中我更喜欢看=>,因为它是键/值对的更明显的分隔符,这也允许我们在更多版本的Ruby上运行代码,如果有必要的话。