94 votes

Comment vérifier si un nombre est compris dans la fourchette (en une phrase)?

Je suis à l'aide de 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 tiens à vérifier 1 <= number <= 10 et de récupérer une valeur booléenne si l' number de la 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?

179voto

ream88 Points 5065

(1..10).include?(number) est le truc.

Btw: Si vous souhaitez valider un numéro à l'aide d' ActiveModel::Validations, vous pouvez même le faire:

validates_inclusion_of :number, :in => 1..10

lire ici sur validates_inclusion_of

ou les Rails de 3 façon:

validates :number, :inclusion => 1..10

78voto

tybro0103 Points 13198

Énumérable#include?:

(1..10).include? n

La gamme#?:

(1..10).cover? n

Comparable#entre les deux?:

n.between? 1, 10

Numericality Validateur:

validates :n, numericality: {only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 10}

L'Inclusion Du Programme De Validation:

validates :n, inclusion: 1..10

16voto

Holin Points 369

Si elle ne fait pas partie d'un processus de validation, vous pouvez utiliser #between? :

2.between?(1, 4)
=> true

2voto

Michael Kohl Points 33345

En Ruby 1.9 le plus direct de la traduction semble être la Gamme#?:

Retourne true si obj est entre mendier et à la fin, j'.e beg <= obj <= fin (ou fin exclusif lorsque exclude_end? est vrai).

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 billet de blog pour une explication plus détaillée.

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