Я пытаюсь использовать значение из 'new' в другой функции, но похоже, что приведенный ниже фрагмент кода неисправен.
Я не могу понять, почему.
Я помещаю функцию 'token-generator' в задержку, потому что я хочу, чтобы она запускала функцию 'token-generator' только для получения нового токена, когда истекает текущее старое значение токена.
(def r (let [new (delay (token-generator state))]
(if (compare-and-set! token old new)
new
@token)))
(prn r) -> nil
(prn @r) -> NullPointerException clojure.core/deref-future (core.clj:2208)
Пожалуйста, помогите! Спасибо!
Edit1: «токен» - это переменная, содержащая последний полученный токен, «старый» - последний использованный токен. Они могут отличаться в объеме программы.
Edit2: добавлен @token (последняя строка)