Предположим, у меня есть приложение Sinatra, которое просто печатает случайные числа от 0 до 9:
get '/' do
rand(10)
end
Я хочу убедиться, что приложение не печатает тот же номер, что и в прошлый раз (так что этоне совсем случайный - это просто игрушечный пример, в любом случае):
# I want to do something like this... This code doesn't work.
prev_rand = nil
get '/' do
curr_rand = rand(10)
while prev_rand and curr_rand == prev_rand
curr_rand = rand(10)
end
prev_rand = curr_rand
curr_rand
end
Как бы я это сделал?Использование приведенного выше примера не совсем работает, так как prev_rand
внутри блока get '/'
является локальной переменной (не такой, как переменная вне блока), поэтому изменение ее значения не сохраняется.
(Я не совсем понимаю сферу Синатры.)