Меня смущает, когда атомы разыменовываются в Clojure. Далее у меня есть функция server-request
, которая получает данные и обновляет request-result-data
, которая является просто картой, индексированной по идентификатору запроса. Функция блокируется до тех пор, пока сервер не завершит отправку данных, и не вернет идентификатор запроса. Первый фрагмент ниже работает как положено. Второе - нет, потому что (кажется) @ request-result-data разыменовывается перед возвратом функции.
;works
(let [req-id (server-request "parameters")]
(pprint (@request-result-data req-id)))
;returns nil
(pprint (@request-result-data (server-request "parameters"))))
Это нормальное поведение? Есть ли лучший способ закодировать это? Интуитивно кажется, что мне не нужно let
здесь.
Спасибо,