Методы Ruby, эквивалентные из, “если в списке” в Python?

Одна вещь иметь в виду состоит в том, что Microsoft имеет выпущенный Клиентский Установочный пакет Профиля Платформы.NET. Это - версия 3,5 платформ, которые предназначены для клиентских приложений и имеют уменьшенное место. Клиентский Профиль не включает части ASP.NET платформы.

, Если Ваше приложение зависит от Системы. Сеть это остановит Вашу способность приложения использовать в своих интересах Клиентский Профиль.

См. Блог Scott Gu для получения дополнительной информации.

17
задан SilentGhost 7 October 2009 в 11:02
поделиться

2 ответа

Используйте метод include? () :

(1..10).include?(5) #=>true
(1..10).include?(16) #=>false

EDIT: (1..10) - это Диапазон в Ruby, в случае, если вам нужен массив (список):

(1..10).to_a #=> [1,2,3,4,5,6,7,8,9,10]
26
ответ дан 30 November 2019 в 11:52
поделиться

У диапазона есть метод ===, который проверяет, является ли аргумент частью диапазона.

Вы используете его так:

(1..10) === 5  #=> true
(1..10) === 15 #=> false

или как вы его написали:

a= (1..10)
a === 5  #=> true
a === 16 #=> false

Вы должны быть уверены, что значения диапазона и значения, которое вы тестируете, относятся к совместимому типу, иначе будет выдано исключение.

(2.718..3.141) === 3 #=> true
(23..42) === "foo"   # raises exception
  • Это делается в O (1), поскольку Range # === (значение) только сравнивает значение с Range # first и Range # last.
  • Если вы сначала вызываете Range # to_a, а затем Array # include ?, он выполняется за O (n), поскольку Range # to_a, необходимо заполнить массив n элементами, и Массив # включить? необходимо снова перебрать n элементов.

Если вы хотите увидеть разницу, откройте irb и введите:

(1..10**9) === 5            #=> true
(1..10**9).to_a.include?(5) # wait some time until your computer is out of ram and freezess
10
ответ дан 30 November 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: