Random clj记录:何时:调用保存之前?
我正在使用Random clj记录:何时:调用保存之前?,random,clojure,lazy-evaluation,Random,Clojure,Lazy Evaluation,我正在使用rand将字段值指定为:在clj记录中保存函数之前。下面的random str函数用于生成值 (def VALID-CHARS (map char (concat (range 48 58) ; 0-9 (range 65 91) ; A-Z (range 97 123)))) ; a-z (defn random-char [] (nth VALID-CHARS (rand (count VALID-CHARS)))) (defn
rand
将字段值指定为:在clj记录中保存函数之前。下面的random str
函数用于生成值
(def VALID-CHARS
(map char (concat (range 48 58) ; 0-9
(range 65 91) ; A-Z
(range 97 123)))) ; a-z
(defn random-char []
(nth VALID-CHARS (rand (count VALID-CHARS))))
(defn random-str [length]
(apply str (take length (repeatedly random-char))))
当我随后使用从clj记录create
functon返回的映射时,该字段的值与数据库中的值不同。这是否意味着有一些懒惰的评估正在进行?random str
是否被多次调用?这听起来像是clj记录的问题
在clojure中,只有使用惰性序列,或使用。
否则,clojure是一种经过严格/热切评估的语言。psst。这是我的怀疑。我不明白为什么兰德会被评估多次,除非在clj记录中有原子或引用在使用。事务中涉及的函数不应该有副作用,而且兰德有状态,所以我想我会把它归结为经验。