Определение, ли переменная в диапазоне?

Ошибка ясна 400 Bad Request

E: Не удалось получить http://gb.archive.ubuntu.com/ubuntu/pool/main /j/jbigkit/libjbig0_2.1-3.1_amd64.deb 400 Bad Request [IP: 91.189.88.161 80]

blockquote>

URL-адрес в порядке. Запустите из командной строки на 91.189.88.161 80

# apt update
# apt install nginx

Если это работает, то это может быть проблема Ansible.

130
задан ROMANIA_engineer 6 October 2017 в 18:01
поделиться

5 ответов

Как сказал @Baldu, используйте оператор === или вариант использования / when, который внутри использует ===:

case i
when 1..10
  # do thing 1
when 11..20
  # do thing 2
when 21..30
  # do thing 3
etc...
70
ответ дан 24 November 2019 в 00:19
поделиться

, если вы по-прежнему хотите использовать диапазоны ...

def foo(x)
 if (1..10).include?(x)
   puts "1 to 10"
 elsif (11..20).include?(x)
   puts "11 to 20"
 end
end
40
ответ дан 24 November 2019 в 00:19
поделиться

A more dynamic answer, which can be built in Ruby:

def select_f_from(collection, point) 
  collection.each do |cutoff, f|
    if point <= cutoff
      return f
    end
  end
  return nil
end

def foo(x)
  collection = [ [ 0, nil ],
                 [ 10, lambda { puts "doing thing 1"} ],
                 [ 20, lambda { puts "doing thing 2"} ],
                 [ 30, lambda { puts "doing thing 3"} ],
                 [ 40, nil ] ]

  f = select_f_from(collection, x)
  f.call if f
end

So, in this case, the "ranges" are really just fenced in with nils in order to catch the boundary conditions.

1
ответ дан 24 November 2019 в 00:19
поделиться

Используйте оператор === (или его синоним include? )

if (1..10) === i
83
ответ дан 24 November 2019 в 00:19
поделиться
if i.between?(1, 10)
  do thing 1 
elsif i.between?(11,20)
  do thing 2 
...
298
ответ дан 24 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

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