그래서 congomongo (끝 근처의 가져 오기 기능)를 사용하여 mongodb 컬렉션에서 일부 문서를 가져옵니다. 가져 오기 호출을 통해 옵션을 전달하려면 (posts :limit 1)
과 같은 것을 수행하고 {:limit 1}
을 가져 와서 가져 오도록 할 수 있습니다. clojure.core/memoize
으로 이해할 수있는 캐시를 재설정 할 수 있기를 원하기 때문에 손으로 말한 "memoization"을 @posts
과 함께 수행하고 있습니다.더 많은 관용적 인 멍청한 코드를 만들 수 있도록 도와주세요
지금 보았을 때 문제는 (fetch :posts options)
호출이 중요하지 않으며, dosync가 트랜잭션을 다시 시도해야한다면 실제로 데이터 저장소를 해머하지 않을 것입니다. 나는 총 clojure/fp 멍청한 놈이지만, 나는 그 문제를 해결하는 방법을 모르겠다. 또한, 내가 멍청이이기 때문에, 내가 여기있는 다른 일을하면 너는 싫증이 나고, 나는 이것을 올바르게 쓰는 방법을 찾고 싶다.
(def posts (ref nil))
(defn reset-posts [] (dosync alter posts nil))
(defn fetch-posts [& options]
(let [options (apply array-map options)]
(or @posts
(dosync alter posts (fetch :posts options)))))
@cdereview.stackexchange.com –
@Duncan Bayne : 그 존재를 알지 못 했어, 고마워 :) –