#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Существует ли ярлык Ruby для следующего?
if (x > 2) and (x < 10)
do_something_here
end
Я думал, что видел что-то на этот счет, но не могу найти ссылку на это. Конечно, трудно выполнить поиск, когда вы не знаете, какой оператор вы ищете.
Ответ №1:
if (3..9).include? x
# whatever
end
В качестве дополнительного примечания вы также можете использовать оператор тройного равенства для диапазонов:
if (3..9) === x
# whatever
end
Это позволяет использовать их также в операторах case:
case x
when 3..9
# Do something
when 10..17
# Do something else
end
Комментарии:
1. тройное равенство — это ярлык, который я искал в этом конкретном случае! Спасибо!
Ответ №2:
do_something if (3..9).include?( x ) # inclusive
do_something if (3...10).include?( x ) # inclusive start, exclusive end
Посмотрите на Range
класс; вы можете прочитать введение к ним, размещенное на моем веб-сайте.
Комментарии:
1. большое вам спасибо. и ваш веб-сайт — исключительный ресурс, о котором я не знал!!
2. Осторожно с
Range#include?
. Он оценивает каждый элемент в диапазоне, если диапазон не является числовым. в моей системе это("aaaaaa".."zzzzzz").include?("zzzzzz")
уже занимает 2 минуты . Для целых чисел, как указано в вопросе, это не проблема.
Ответ №3:
do_something if x.between?(2, 10)
Ответ №4:
Что-то вроде этого?
do_something if (3..9) === x
или
r = 3..9
if r === x
. . .