2
說我有以下幾點:如何被解析的對象 「如果」
class Foo
def inspect
false
end
def ==(other)
false == other
end
end
foo = Foo.new # => false
foo # => false
foo == false # => true
foo == true # => false
然而
if foo then 'hi' end
# => 'hi'
我所期待的是
if false then 'hi' end
# => nil
我期待foo
評估作爲false
但它不是。 if
如何評估foo
以及爲什麼不是false
?
再次,塞爾吉奧是第一個提供了一個很好的答案。讓我只是添加[鏈接到Avdi着名文章處理同一問題](http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/)。儘管如此,我必須說,我反對'虛無'。我認爲Ruby中的'nil'對於一個正確實現的空對象模式來說是一個蹩腳的ersatz。但今天糾正已經太遲了。 –
@BorisStitnicky:你可以派紅寶石:) –
不是現在,我忙於在Ruby中重寫SBML。我滿足了自己[與kibbitzing: - ]](http://bugs.ruby-lang.org/issues/8365) –