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