我努力學習Rails和我下載我可以看到這個文件之一:Rails的高清初始化塞解釋
注意:這個文件是根據模型。
def initialize slug
api_call "http://yourwebsiteurl.com/REST/" + slug.to_s
end
這是什麼意思?它是否像Java中的構造函數?
優素福
我努力學習Rails和我下載我可以看到這個文件之一:Rails的高清初始化塞解釋
注意:這個文件是根據模型。
def initialize slug
api_call "http://yourwebsiteurl.com/REST/" + slug.to_s
end
這是什麼意思?它是否像Java中的構造函數?
優素福
正如評論回答中,initiailze
方法是Ruby的新對象的構造方法。也就是說,當你在一個對象上調用new
時,它會轉過來並調用initialize
。
但是,既然您是Ruby的新手,我想指出代碼的風格問題。慣用的Ruby的方式來寫這個方法是:
def initialize(slug)
api_call "http://yourwebsiteurl.com/REST/#{slug}"
end
的區別是:
"#{}"
)通過字符串連接(+
)插入變量,因爲它更簡單,性能更高雖然這些有些隨意的差異,但它們仍然被廣泛接受。請參閱GitHub Ruby Style Guide。
謝謝老兄:),那個鏈接也非常有用。 – Youssef 2014-08-27 10:46:32
嗨,我還有一個問題,請問什麼是api_call?它是一個變量(不等號)? – Youssef 2014-08-27 10:54:12
'api_call'是一個方法名稱。在ruby方法調用中,括號通常是可選的。您也可以將此位寫爲'api_call(「http://yourwebsiteurl.com/REST/#{slug}」)'。事實上,我一般會這樣做。關於何時使用括號進行方法調用的規則是:如果您關心方法調用的返回值,請使用括號 - 否則不要。 (原因在於,如果你關心結果,那麼你可能希望稍後鏈接到它,這是括號允許你做的。)但是Ruby社區中的許多人只是在受到語法約束時纔會使用括號。 – pdobb 2014-08-27 11:04:24
是的,這是一個構造函數。 – 2014-08-27 10:14:22
slug是傳遞給構造函數的參數嗎? – Youssef 2014-08-27 10:17:06
是的,slug是一個傳遞給構造函數的參數(到'new'方法)。 – 2014-08-27 10:18:18