我對clojure很陌生,正試圖突破一些我不斷遇到的問題。有問題的代碼是函數v3
應接受4個參數:爲什麼我從這段代碼中得到一個錯誤?
- 一分鐘和一個最大整數,
mi
和ma
,與random-numbers
函數的使用在一定範圍內找到號碼, - 另一整數,
cnt
,以表示我多少個號碼想在我的 最終名單,並 tones
,這是一個隨機數字有 匹配一旦我計算一列整數模說號碼12。
該函數應該運行,直到o
是包含也可在tones
列表隨機數長度cnt
的列表。
我的文件彙編就好了,但是當我想用的東西來運行函數本身在REPL,比如像(v3 58 52 15 '(0 2 4 5 7 9))
我收到以下錯誤:
ClassCastException clojure.langLazySeq cannot be cast to java.lang.Number clojure.langNumbers.reminder (Numbers.java:173)
這裏是我的代碼
(defn random-numbers [start end n]
(repeatedly n #(+ (rand-int (- end start)) start)))
(defn m12 [input]
(mod input 12))
(defn in? [coll elm]
(some #(= elm %) coll))
(defn v3 [ma mi cnt tones]
(let [o '()]
(loop []
(when(< (count o) cnt)
(let [a (m12 (random-numbers mi ma 1))]
(if (in? tones a)
(conj o a)))))
(println o)))
是不是這只是國防部需要一個號碼,你給它一個序列? –
我想可能是這樣,隨機數函數可能會返回一個1的序列。我會嘗試,謝謝:) – Sturla
這樣的問題坐在[CodeReview](http://codereview.stackexchange.com/)比在Stackoverflow更好。 – Thumbnail