2
我有一個Smalltalk的方法:Nonboolean接收器 - 繼續對真理
isInvalid
|tmp|
tmp := super isInvalid.
tmp ifTrue: [^ True].
^instanceVar isNil.
我得到一個異常:Unhandled exception: NonBoolean receiver--proceed for truth
扔在分配溫度。我很肯定super isInvalid
返回一個布爾對象,所以我認爲我誤解了這個異常的含義。其他人碰巧知道嗎?
謝謝。今天早上我在Python中工作,布爾值是True和False。那樣做了。 – Daniel 2013-03-01 17:27:59
mliebelt是正確的,但是,要反映您的示例(wrt惰性評估)的相同語義將是'^ super isInvalid或:[instanceVariable isNil]'('||'每次都評估這兩個值,'#or:'確實不) – Tobias 2013-03-02 11:10:32
我不認爲這是真的。 2例:第一個:'super isInvalid == true' ==>通過返回nil跳出來,其餘的不再評價。第二個:'super isInvalid == false' ==>評估'instanceVar isNil'並返回結果。這正是'||'所做的。 – mliebelt 2013-03-03 11:34:36