MyClass
クラスのインスタンスを偽の値に評価させようとしています。MyClass
そこで、私は、として機能させるために考えられるすべてのメソッドをオーバーライドしようとしましnil
た。私が得た:
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
ます。a
だから私はRubyがどのようにであるnil
かをチェックするのか疑問に思いfalse
ました。開発者がアクセスできないものだと思います。
これは実際の問題を解決するためのものではなく、実際に解決できないのではないかと思っています。これがRubyの「everything-ist-true-except-false-and-nil」イディオムを破るだろうと私は知っています、そしてそれはおそらく純粋に邪悪なハックでしょう。