Лучший способ узнать, является ли что-то булевым - PullRequest
1 голос
/ 07 апреля 2011

Каков наилучший способ спросить объект, является ли он логическим?

По запросу, вот причины:

У меня есть метод, который печатает материал, любой тип материала, икогда этот материал является логическим, я хочу, чтобы он печатал «Да» или «Нет» вместо «истина» или «ложь».Я делал это так, но для меня это выглядело как хак:

[anObject
    ifTrue: [ 'Yes' ]
    ifFalse: [ 'No' ] ] 
        on: Error 
        do: [ anObject printString ]

Ответы [ 5 ]

5 голосов
/ 10 апреля 2011

Добавьте собственное определение printString, затем:

Object >> #bernatPrintString
  ^self printString

True >> #bernatPrintString
  ^'Yes'

False >> #bernatPrintString
  ^'No'
4 голосов
/ 07 апреля 2011
anObject == true or: [ anObject == false ]
2 голосов
/ 07 апреля 2011

value isKindOf: Boolean - но я бы избегал таких проверок! Возможно, что-то не так, если вам нужно это сделать ...

0 голосов
/ 08 апреля 2011

Что может быть проще?

anObject isBoolean ifTrue: [...] ifFalse: [...]

0 голосов
/ 07 апреля 2011

Еще проще, эффективнее и не нужно избегать: value class == Boolean

...