Jos*_* M. 0 ruby syntax ruby-on-rails hashrocket
有人能指出我只是解释Ruby/Rails中不同语法特征的好的入门读物吗?例如,我看到的一些例子myMethod(x: "z")和其他例子怎么做myMethod(:x => "x")?
一般来说语法对我来说似乎很奇怪,只是寻找一个快速的一目了然的参考作为备忘单.
它们是相同的,这只是一个偏好问题.
我也问过自己为什么我们会添加这个新语法?好吧,用Ruby编程意味着我们很懒,想要输入较少的caracters.因此,这种新语法允许我们 - 懒惰的程序员 - 编写相同的东西,减去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
Run Code Online (Sandbox Code Playgroud)
此外,使用新语法时某些声明是非法的:
> { '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
Run Code Online (Sandbox Code Playgroud)
有关更多信息:`:key =>"value"`和`key:"value"`哈希表示法之间是否有任何区别?