當使用紅寶石method_missing
,這是almost always a good idea定義respond_to_missing?
爲好。「respond_to_missing?」的第二個參數對任何事情都有用嗎?
respond_to_missing?
有兩個參數;我們正在檢查的方法的名稱(symbol
),以及一個布爾值,表示我們是否應該在我們的支票中包含私人方法(include_all
)。
現在這就是我很困惑:method_missing
不接受任何可能表明它是否應該調用私人方法的參數,如respond_to_missing?
所做的那樣。此外,無論原始方法調用是處於公共還是私有環境中,並且無論在適當的上下文中爲給定方法返回什麼,method_missing
都會被調用。因此,所有method_missing
的操作都可以公開訪問。
如果是這樣,那麼respond_to_missing?
(include_all
)的第二個參數有什麼作用?無論是給定的對象響應缺少方法不能通過在缺少方法被調用的情況下受到影響,那爲什麼還要有這個說法呢?
嗯...所以你說,即使目前沒有辦法使缺少的方法變爲私人,你可以使用'respond_to_missing?'來部分模仿這種行爲,不要宣傳你可能存在的缺失方法想成爲私人? – Ajedi32
是的,沒錯。 –