Clojure字符串拆分导致IllegalArgumentException

时间:2012-12-31 07:10:09

标签: clojure

CLOJURE

大家好,我是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 个答案:

答案 0 :(得分: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" #",")))