Как проверить, содержится ли переменная в списке целых чисел с Ruby? - PullRequest
0 голосов
/ 23 марта 2012

Я бы хотел сделать что-то вроде ...

if current_user.id in?(1,2,3,100,312)
 .....

Как это возможно с рубином? Спасибо

Ответы [ 4 ]

2 голосов
/ 23 марта 2012

Ключевое слово, которое вы ищете: include .Тем не менее, это работает противоположным образом, чем у вас есть.Это должно быть ARRAY.include?(WHAT_YOU_ARE_LOOKING_FOR)

if [1,2,3,100,312].include?(current_user.id)
2 голосов
/ 23 марта 2012
if [1,2,3,100,312].include?(current_user.id)
    ....

Это должно сделать это.

2 голосов
/ 23 марта 2012

Ruby имеет функцию включения.Синтаксис выглядит следующим образом

[1,2,3].include?(2)
1 голос
/ 24 марта 2012

Все отметили Array#include?. Обратите внимание, что если в массиве много значений, включите? может быть относительно дорогой операцией O (n). Ruby's Set при поиске имеет значение O (1), поэтому, если скорость является проблемой:

require 'set'

SPECIAL_USER_IDS = Set[1,2,3,100,312]
...
if SPECIAL_USER_IDS.include? current_user.id

Я инициализировал набор отдельно вместо встроенного, поскольку Set.new (массив) сам по себе является операцией O (n). В микробенчмарках я обнаружил, что наборы незначительно быстрее даже при низкой мощности (вплоть до отдельных элементов) и значительно быстрее при высокой мощности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...