我正在嘗試使類MyClass
的實例評估爲虛假值。所以我試圖覆蓋所有我認爲能夠使MyClass
充當nil
的方法。我:在評估條件中的真實性時,Ruby如何評估對象的類別?
a = MyClass.new
a.nil? #=> true
a.class #=> NilClass
a == nil #=> true
a.eql? nil #=> true
a.equal? nil #=> true
a.instance_of? NilClass #=> true
a.kind_of? NilClass #=> true
a.is_a? NilClass #=> true
我甚
nil == a #=> true
nil.eql? a #=> true
nil.equal? a #=> true
最後我想
a.__id__ #=> 4
nil.__id__ #=> 4
a.object_id #=> 4
nil.object_id #=> 4
但儘管如此,a
將始終評估爲true
。所以我想知道Ruby是如何檢查a
是nil
還是false
。我想這是開發人員無法訪問的東西。
這不是爲了解決實際問題,我只是想知道它是否確實無法完成。我知道這會破壞Ruby的「一切都是真實的 - 除了虛假和零」--idiom,它很可能是純粹的邪惡黑客。
編號nikifi想知道這個習語的好處。我想知道,它是如何執行的,以及是否有辦法干擾api。 – Conkerchen 2013-02-22 17:03:07