有人能指出我刚才解释Ruby / Rails中不同语法特征的好基础吗?例如,我看到的一些例子如何myMethod(x: "z")
而其他人做myMethod(:x => "x")
?
一般来说语法对我来说似乎很奇怪,只是想快速一目了然地将其用作备忘单。
答案 0 :(得分:7)
它们是相同的,这只是一个偏好问题。
我也问自己为什么我们会添加这个新语法?如果我们已经有了这个语法?那么,用Ruby编程意味着我们很懒,想要输入较少的字符。因此,这种新语法允许我们 - 懒惰的程序员 - 编写相同的东西,减去1个字符!
但请记住一些东西,例如键的类型(Ruby 1.9.3):
> {a: 12}.class
=> Hash
> {:a => 12}.class
=> Hash
> {'a' => 12}.keys.first.class
=> String
> {a: 12}.keys.first.class
=> Symbol
此外,使用新语法时,某些声明是非法的:
> { '1-2' => "something" }
=> {"1-2"=>"something"}
> { 1-2: "something" }
SyntaxError: (irb):38: syntax error, unexpected ':', expecting tASSOC
{ 1-2: "something" }
^
(irb):38: syntax error, unexpected '}', expecting $end
了解更多信息:Is there any difference between the `:key => "value"` and `key: "value"` hash notations?