Como um desenvolvedor júnior de rails, uma das primeiras coisas que me pareceram contra-intuitivas foi que eu não poderia simplesmente verificar um tipo booleano da mesma forma que faria com qualquer outra classe.
Embora eu pudesse perguntar a um valor se ele é um número inteiro de várias maneiras:
value.integer?
value.is_a? Integer
#or synonymously
value.kind_of? Integer
Eu não poderia da mesma maneira perguntar um valor se fosse um booleano:
value.boolean?
value.is_a? Boolean
value.kind_of? Boolean
Recentemente, eu estava resolvendo um problema maior e precisava saber se meu valor era de fato um booleano – uma vez que o tíquete atingiu a revisão de código, um colega de trabalho deixou um comentário do tipo
“Acho isso inteligente … certamente não é estúpido , certo? Eu não vi isso antes. “
Pessoalmente, a solução veio rapidamente, no entanto, devido à reação dele, pensei que algumas pessoas poderiam se beneficiar com o que considero uma solução bastante inteligente:
!!value == value
Então, quais são os seus pensamentos, mundo? Inteligente; ou estúpido?
Outra solução, mais legível (portanto, provavelmente mais semelhante a rubi) e igualmente eficaz é:
[true, false].include? value
Qualquer um deles seria uma grande adição de utilitário:
def is_boolean?(value)
[true, false].include? value
end
alias_method(:is_bool?, :is_boolean?)
alias_method(:boolean?, :is_boolean?)