Je cherche un moyen concis de vérifier une valeur pour voir si elle est nulle ou zéro. Actuellement, je fais quelque chose comme :
if (!val || val == 0)
# Is nil or zero
end
Mais cela semble très maladroit.
Je cherche un moyen concis de vérifier une valeur pour voir si elle est nulle ou zéro. Actuellement, je fais quelque chose comme :
if (!val || val == 0)
# Is nil or zero
end
Mais cela semble très maladroit.
Je crois que votre code est incorrect ; il testera en fait trois valeurs : nil
, false
et zéro. Ceci est dû au fait que le !val
est vraie pour toutes les valeurs qui sont fausses, ce qui en Ruby est nil
y false
.
Le mieux que j'ai pu trouver pour l'instant est
if val == nil || val == 0
# do stuff
end
Ce qui, bien sûr, n'est pas très intelligent, mais (très) clair.
Rails le fait par le biais de méthodes de requête d'attributs, où, en plus de false et nil, 0 et "" sont également évalués à false.
if (model.attribute?) # => false if attribute is 0 and model is an ActiveRecord::Base derivation
Il a cependant son lot de détracteurs. http://www.joegrossberg.com/archives/002995.html
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.
1 votes
Que se passe-t-il si val est égal à
false
?