我有一些有点昂贵的计算(启动数据库),如果我真的要使用它,我只想创建数据库。我正在寻找一个参考变量(或者只是一个普通变量,如果可能的话),它只会在它被使用(或取消引用)的情况下评估它的值。概念上类似于以下内容。
(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
将来,当我只使用 var v 或调用 @v 时,我会让它打印出“非常昂贵的功能”,并且从那时起 v 的值为 true。这里重要的是 fn 直到变量被(取消)引用时才被评估。需要时,对函数进行一次且仅计算一次以计算变量的值。这在clojure中可能吗?