Ruby 的參數
大家在寫 Rails 專案的時候,一定都有用過 link_to
這個 view helper。問大家一個簡單的問題:
link_to '刪除', user, method: :delete, data: { confirm: 'sure?' }, class:'btn'
請問,上面這段範例中,link_to
方法共有幾個參數?
如果你的答案是 5 個,那你就需要繼續往下看了 :)
在這篇文章中提到,Ruby 很愛省略東西,像是方法的小括號,所以原來上面的 link_to
語法:
link_to '刪除', user, method: :delete, data: { confirm: 'sure?' }, class:'btn'
原本應該長這樣:
link_to('刪除', user, method: :delete, data: { confirm: 'sure?' }, class:'btn')
最後一個參數如果是 Hash,大括號可省略
在 Ruby 省略小括號大家都知道,不過逗點分開的參數不是 5 個嗎?
事實上,在 Ruby 中如果最後一個參數是 Hash 的話,它的大括號是可以省略的。舉個例子來說:
def say_hello_to(name, options = {})
# do something
end
如果要使用這個方法,可以這樣寫:
say_hello_to "eddie", {age: 18, favorite: 'ruby'}
又,因為最後一個參數是 Hash,所以 Hash 的大括號也可省略:
say_hello_to "eddie", age: 18, favorite: 'ruby'
如果你了解有什麼東西被省略的話,一開始的那段 link_to 的範例:
link_to '刪除', user, method: :delete, data: { confirm: 'sure?' }, class:'btn'
還原之後會變成:
link_to('刪除', user, {method: :delete, data: { confirm: 'sure?' }, class:'btn'})
所以,其實參數個數只有 3 個,最後一個參數是一個 Hash。
小結
Ruby 的語法可以適時的省略小括號、大括號或 return,程式碼寫起來的確會更像文章,對新手來說可能會容易混淆,不過看久了應該也會慢慢習慣了。
以上,希望對大家有幫助 :)
工商服務
實體課程:Ruby on Rails 實戰課程
線上課程:五倍學院線上課程