0

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)

有人可以解释一下我应该如何去做吗?

4

1 回答 1

3

看来你错过了很多。

首先,你使用def了错误的方式。clojure 中的所有变量都是不可变的。所以,在你定义了一些变量之后,你不能改变它的值,但是你可以在任何本地上下文中使用新值重新绑定它let

其次,您对 let 的使用不正确。尝试阅读Clojure 文档

(let [x 1]
     x)

let通过将一些变量与新值绑定来创建新的上下文。[x 1]意味着您将值 1 绑定到变量 x。但在letx 之外不会改变。

你想做的是:

(defrecord Learning [Name Age Gender])

(def person
  (apply ->Learning
         (clojure.string/split "John,12,Male" #",")))
于 2012-12-31T08:47:02.367 回答