Comment vérifier si un nombre est compris dans la fourchette (en une phrase)?
Je suis en utilisant Ruby on Rails 3.0.9 et je voudrais vérifier si un nombre est inclus dans une plage. C'est, si j'ai une variable number = 5
je voudrais vérifier 1 <= number <= 10
et de récupérer une valeur booléenne si le number
valeur est comprise dans cette plage.
Je peux le faire comme ceci:
number >= 1 && number <= 10
mais je voudrais le faire en une seule instruction. Comment puis-je le faire?
- Car il n'y a rien de mal avec votre cité la déclaration qu'il pose la question: pourquoi ne voulez ou avez besoin de plus de "raccourcir" il ?
- Moins de code aussi bien que possible!
Vous devez vous connecter pour publier un commentaire.
(1..10).include?(number)
est le truc.Btw: Si vous souhaitez valider un numéro à l'aide
ActiveModel::Validations
, vous pouvez même le faire:lire ici sur validates_inclusion_of
ou les Rails de 3 façon:
allow_nil
. Il suffit de l'ajouter comme suit:, allow_nil: true
Énumérable#include?:
La gamme#couverture?:
Comparable#entre?:
Numericality Validateur:
L'Inclusion Du Programme De Validation:
validates :amount, numericality: { less_than_or_equal_to: ->(m) { m.user.balance }, greater_than_or_equal_to: 0 }
Si elle ne fait pas partie d'un processus de validation, vous pouvez utiliser
#between?
:Pour la précision des messages d'erreur sur la soumission d'un formulaire , essayez ces
Rails 4
Mais La manière la plus simple que j'ai trouver est
number.between? start_number, end_number
En Ruby 1.9 le plus direct de la traduction semble être La gamme#couverture?:
Dans le cas où vous vous demandez comment c'est différent de
Range#include?
, c'est que ce dernier effectue une itération sur tous les éléments de la gamme si c'est un non-numériques de la gamme. Voir ce post de blog pour une explication plus détaillée.