2
在構造函數中,經常發生想要將參數變爲實例變量的情況。一個天真的方式做到這一點是:在構造函數中使用splat運算符有效嗎?
class A
def initialize a, b, c
@a, @b, @c = a, b, c
end
end
,但更簡單的方法是:
class A
def initialize *args
@a, @b, @c = args
end
end
但我關心的代碼的速度,因爲它看起來像後者的代碼創建一個額外的數組args
這是不是在前代碼中創建的。從速度或效率的角度來看,堅持前者還是後者更好,還是沒有區別?
Ruby是很慢,足以額外的陣列應該不會太大的關係。 *鴨子* – 2012-02-15 22:44:02
不是一個真正的答案,但我會建議編寫一個測試程序,使用每個構造函數定義實例化數千個對象。比較每次完成的時間將產生兩個實現中更快的時間。 – ardnew 2012-02-15 22:46:00
我知道你特別關心速度,但鑑於第二個片段丟棄了重要的信息(方法的論點),很難看出爲什麼會這樣寫... – tokland 2012-02-15 23:11:17