2012-12-31 29 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" #",")))