询问对象是否为布尔值的最佳方法是什么?
根据要求,原因如下:
我有一个方法可以打印东西,任何类型的东西,当这个东西是布尔值时,我希望它打印“是”或“否”而不是真或假。我是这样做的,但它看起来太像我了:
[anObject
ifTrue: [ 'Yes' ]
ifFalse: [ 'No' ] ]
on: Error
do: [ anObject printString ]
答案 0 :(得分:5)
添加您自己的printString定义:
Object >> #bernatPrintString
^self printString
True >> #bernatPrintString
^'Yes'
False >> #bernatPrintString
^'No'
答案 1 :(得分:4)
anObject == true or: [ anObject == false ]
答案 2 :(得分:2)
value isKindOf: Boolean
- 但我会避免这样的检查!如果你需要这样做,可能会有一些错误......
答案 3 :(得分:0)
什么可以更简单?
anObject isBoolean ifTrue:[...] ifFalse:[...]
答案 4 :(得分:-1)
更简单,最有效,无需避免:value class == Boolean