У меня есть класс с array = [element1, element2, element3]
. Я устанавливаю для element1 = 1s
, element2 = 5s
, element3 = 7s
в то же время. Это означает, что через 1 секунду массив изменится на [element2, element3]
Спустя 5 секунд [element3]
, через 7 с будет пустой массив. Как мы можем это сделать? Это похоже на пути, которые мы установили для Redis expire key 30
, ttl key
.Истекает переменные после определенного времени в рубине
-1
A
ответ
0
В рубине нет встроенных функций, и для его реализации можно использовать различные структуры данных, в зависимости от ситуации.
Вот простейший пример:
class Ephemarray
def initialize
@array = []
end
def [] index
return nil if @array[index].nil?
return @array[index] = nil if (Time.now - @array[index][2] > @array[index][1])
return @array[index][0]
end
def []= index, expiry, value
@array[index] = [value, expiry, Time.now]
end
end
e = Ephemarray.new
e[0, 4] = 'blah'
Конечно, вы всегда можете решить эту проблему с помощью gem install redis
с;
Да, мы делаем. Это включает в себя запись кода для проверки, чтобы узнать, сколько времени истекло, а затем назначить им «nil». Я никогда не видел причины делать то, о чем вы говорите, в коде. Вместо этого я отказываюсь делать то, что требует использования этих переменных, если время истекло. –
Я только что редактировал вопрос для получения более подробной информации. –