2014-08-27 49 views
0

我努力學習Rails和我下載我可以看到這個文件之一:Rails的高清初始化塞解釋

注意:這個文件是根據模型。

def initialize slug 
    api_call "http://yourwebsiteurl.com/REST/" + slug.to_s 
end 

這是什麼意思?它是否像Java中的構造函數?

優素福

+1

是的,這是一個構造函數。 – 2014-08-27 10:14:22

+0

slug是傳遞給構造函數的參數嗎? – Youssef 2014-08-27 10:17:06

+1

是的,slug是一個傳遞給構造函數的參數(到'new'方法)。 – 2014-08-27 10:18:18

回答

2

正如評論回答中,initiailze方法是Ruby的新對象的構造方法。也就是說,當你在一個對象上調用new時,它會轉過來並調用initialize

但是,既然您是Ruby的新手,我想指出代碼的風格問題。慣用的Ruby的方式來寫這個方法是:

def initialize(slug) 
    api_call "http://yourwebsiteurl.com/REST/#{slug}" 
end 

的區別是:

  1. 始終使用括號將方法參數
  2. 始終使用2個空格進行縮進
  3. 身高字符串插值( "#{}")通過字符串連接(+)插入變量,因爲它更簡單,性能更高

雖然這些有些隨意的差異,但它們仍然被廣泛接受。請參閱GitHub Ruby Style Guide

+0

謝謝老兄:),那個鏈接也非常有用。 – Youssef 2014-08-27 10:46:32

+0

嗨,我還有一個問題,請問什麼是api_call?它是一個變量(不等號)? – Youssef 2014-08-27 10:54:12

+1

'api_call'是一個方法名稱。在ruby方法調用中,括號通常是可選的。您也可以將此位寫爲'api_call(「http://yourwebsiteurl.com/REST/#{slug}」)'。事實上,我一般會這樣做。關於何時使用括號進行方法調用的規則是:如果您關心方法調用的返回值,請使用括號 - 否則不要。 (原因在於,如果你關心結果,那麼你可能希望稍後鏈接到它,這是括號允許你做的。)但是Ruby社區中的許多人只是在受到語法約束時纔會使用括號。 – pdobb 2014-08-27 11:04:24