155 votes

Vérifier si l'objet Ruby est un booléen

N’arrive pas à trouver comment faire pour vérifier si un objet est une valeur booléenne facilement. Y a-t-il quelque chose comme ceci dans Ruby ?

En ce moment je fais cela et tiens à le raccourcir :

151voto

mahemoff Points 4879

Je trouve cela d’être concis et mieux documenté :

Si vous utilisez des Rails ou ActiveSupport, vous pouvez même faire une requête directe à l’aide``

Vérification contre toutes les valeurs possibles n’est pas quelque chose que je recommande pour les flotteurs, mais pour boolean, c’est possible !

147voto

Konstantin Haase Points 12089

Moyen le plus simple que je pense :

94voto

banister Points 13181

Il n’y a aucun classe de Ruby, la seule façon de vérifier est de faire ce que vous faites (en comparant l’objet contre et ou la classe de l’objet contre et `` ). Ne peut pas penser pourquoi vous auriez besoin cette fonctionnalité, vous pouvez expliquer ? :)

Si vous vraiment besoin de cette fonctionnalité cependant, vous pouvez le hack dans :

29voto

Steve Weet Points 15395

Comme indiqué ci-dessus il n'y a pas de classe boolean juste TrueClass et FalseClass cependant, vous pouvez utiliser n'importe quel objet que l'objet de si/moins et tout est vrai, sauf cas de FalseClass et de néant

Tests booléens retourner une instance de la FalseClass ou TrueClass

(1 > 0).class #TrueClass

La suite monkeypatch pour Objet de vous dire si quelque chose est une instance de TrueClass ou FalseClass

class Object
  def boolean?
    self.is_a?(TrueClass) || self.is_a?(FalseClass) 
  end
end

L'exécution de certains tests de la cisr donne les résultats suivants

?> "String".boolean?
=> false
>> 1.boolean?
=> false
>> Time.now.boolean?
=> false
>> nil.boolean?
=> false
>> true.boolean?
=> true
>> false.boolean?
=> true
>> (1 ==1).boolean?
=> true
>> (1 ==2).boolean?
=> true

22voto

Henrik N Points 4447

Si votre code peut raisonnablement être écrite comme une instruction case, c’est assez décent :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X