有人可以指點我一個很好的入門知識,只是解釋Ruby/Rails中的不同語法特徵?例如,我看到一些例子如何做myMethod(x: "z")
和其他人做myMethod(:x => "x")
?紅寶石/ Rails哈希火箭語法
對於我來說,語法一般來說似乎很奇怪,只是尋找一個快速瀏覽一下作爲備忘單的參考。
有人可以指點我一個很好的入門知識,只是解釋Ruby/Rails中的不同語法特徵?例如,我看到一些例子如何做myMethod(x: "z")
和其他人做myMethod(:x => "x")
?紅寶石/ Rails哈希火箭語法
對於我來說,語法一般來說似乎很奇怪,只是尋找一個快速瀏覽一下作爲備忘單的參考。
他們是一樣的,這只是一個偏好問題。
我還問自己爲什麼我們要添加這個新的語法,如果我們已經有一個?那麼,使用Ruby進行編程意味着我們很懶,並且想輸入較少可能的字符。所以這個新的語法允許我們 - 懶惰的程序員 - 寫同樣的東西,減去1個字符!
但請記住一些東西,像鑰匙的實例的類型(紅寶石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?
使用Rails 3.2.13,'MyModel.new(first_name:「Max」)'在rails視圖(erb):'語法錯誤,意外的':','期待')中似乎是非法的。還是我困惑? –
你使用的是Ruby 1.9.x還是>?這個語法是在Ruby 1.8之後引入的 – MrYoshiji
Ruby v1.8.7 - 我覺得我錯過了Ruby/Rails的基礎。對於那個很抱歉。我是一個終身的Java/C#開發人員,這對我來說是陌生/奇怪的。 :) –
http://stackoverflow.com/questions/10004158/is-hash-rocket-deprecated?lq=1 && http://stackoverflow.com/questions/8675206/is-there-any-difference-between-the-key-value-and-key-value-hash-no?lq=1&& http://stackoverflow.com/questions/2134702/ruby-1-9-hash-with-a-dash-in-a-key?rq = 1和許多關於同一主題的其他文章:Google雜誌中的「哈希火箭語法軌道」 – MrYoshiji
只是關於你的具體情況,如果我記得第一種做myMethod的方法(x:「z」)被添加到ruby 1.9中,而在此之前唯一的方法是使用「hashrocket」並執行myMethod(:x =>「x」 ) –
這裏是一個很好的通用紅寶石表:http://overapi.com/ruby/和@AlthafHameez是正確的關於你的具體問題 - 'x:z'語法只是更新 – dax