有人可以给我指出一个很好的入门书来解释 Ruby/Rails 中的不同语法特性吗?例如,为什么我看到的一些例子是做的myMethod(x: "z")
,而另一些例子是做的myMethod(:x => "x")
?
一般的语法对我来说似乎很奇怪,只是寻找一个快速的一目了然的参考作为备忘单。
有人可以给我指出一个很好的入门书来解释 Ruby/Rails 中的不同语法特性吗?例如,为什么我看到的一些例子是做的myMethod(x: "z")
,而另一些例子是做的myMethod(:x => "x")
?
一般的语法对我来说似乎很奇怪,只是寻找一个快速的一目了然的参考作为备忘单。
它们是相同的,只是偏好问题。
我还问自己,如果我们已经有了一个新语法,为什么还要添加这个新语法?好吧,使用 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