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)
有人可以解释我该怎么做呢?
答案 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" #",")))