2012-12-31 30 views
0

CLOJUREClojure字符串拆分導致IllegalArgumentException

大家好,我是clojure的新手。我想用分割字符串更新我的記錄。

(defrecord Learning [Name Age Gender]) 
(def person [:Name :Age :Gender]) 

(let person 
(clojure.string/split "John,12,Male" #",")) 

我能夠分割字符串,但它拋出一個異常 IllegalArgumentException let requires a vector for its binding in ShipDataRecord:1 clojure.core/let (core.clj:3965)

可有人好心解釋,我應該如何去這樣做呢?

+1

你是不是新的,但非常非常新的Clojure。請閱讀clojure文檔,看看如何使用'let' – Ankur

回答

3

看起來像你錯過了很多。

首先,您使用def錯誤的方法。 clojure中的所有變量都是不可變的。因此,在定義某個變量後,您無法更改其值,但可以使用let在任何本地上下文中重新綁定新值。

其次,您使用let是不正確的。試着讀Clojure Docs

(let [x 1] 
    x) 

let通過結合使用新值某些變量創建新的上下文。 [x 1]表示您將值1綁定到變量x。但let x不會改變。

你想要做的是:

(defrecord Learning [Name Age Gender]) 

(def person 
    (apply ->Learning 
     (clojure.string/split "John,12,Male" #",")))