2009-08-28 75 views
6

Ruby中很常見的方法是接收參數散列而不是將參數傳遞給方法。哈希與多個參數?

我的問題是 - 什麼時候你的方法使用參數,什麼時候使用參數散列?

說方法有多個或兩個參數時使用參數散列是一個好習慣嗎?

回答

0

一個顯而易見的用例是,當您重寫子類中的某個方法時,您應該在調用父方法的參數時使用散列參數。

4

只要它們表示語義上屬於一組的選項,就使用參數散列。任何其他參數都是直接(通常是必需的)參數的函數,我一個接一個地傳遞。

+1

+1 - 應該不需要參數散列中的任何內容。可選參數可以用默認值命名,但我傾向於將它們傳遞給哈希,並在需要時在方法體中設置默認值。 – 2009-08-28 16:56:33

1

如許多rails的方法中所看到的,您可能希望在有很多可選參數或者想要接受任意參數時使用散列。

0

在另一方面,這不僅關係到Ruby,但所有的語言:

在API的這是在不斷變化,有時可作爲一個單一的參數對象的部分或全部參數申報的功能(在Ruby中,這些可以是散列,C結構等),以便在未來版本中接受的參數集發生更改時維持API穩定性。然而,明顯的缺點是可讀性急劇下降,除非真的需要,否則我絕對不會使用這種「模式」。

1

如果您有超過2個論據。你應該開始考慮使用散列。 這是在乾淨的代碼中清楚解釋的良好做法link text