2
大衛·布萊克在他的書中說:破壞性的方法和爆炸方法在Ruby中
危險可能意味着無論寫方法的人希望它的意思。在內置類的情況下,它通常意味着這種方法,不像它的非爆炸等效, 永久修改它的接收器。但它並不總是:退出!是退出的一種危險的替代方式,因爲它不會在退出程序的時候運行任何終結器。
危險! (一種替換字符串替換字符串中的匹配模式的方法)部分地是它改變了它的接收器,部分地,如果沒有發生變化,它會返回
nil
- 不像sub,它總是返回原始字符串的副本更換(或不更換)。
雖然以上所有內容都可以理解,但無法理解他在下面所說的內容。
此外,不要假設爆炸方法和破壞性方法之間有直接關係。它們經常是重合的,但它們並不是一回事。
基於什麼概念,我們可以進行分類,把一個方法的破壞性或危險的名單?
好的。正如你所說的那樣,「破壞性方法就是那些改變被調用對象的屬性值的方法與'bang'方法相同嗎?那麼爲什麼他說他們有時是相同的?*你回答了*,但有時不相同 - 他在這裏的含義是什麼? – 2013-03-09 16:25:24
這意味着你(或其他程序員)可以定義一個名爲'destroy!'的方法,但實際上它不會做任何破壞性的操作。爆炸符號只是一個約定,由程序員決定是否遵循它。因此,當你閱讀其他人的代碼時,你也不能認爲他們遵循了這個慣例。 – Mchl 2013-03-09 16:37:49