【发布时间】:2011-07-28 16:05:22
【问题描述】:
我在 clj-record 中使用rand 将字段值分配为:before-save 函数。下面的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-record create 函数返回的映射时,该字段的值与数据库中的值不同。这是否意味着有一些懒惰的评估怪异正在发生? random-str 是否被多次调用?
【问题讨论】:
-
psst。 (defn random-char [] (rand-nth VALID-CHARS))
标签: random clojure lazy-evaluation