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の使用が正しくありません。ClojureDocsを読んでみてください:

(let [x 1]
     x)

letいくつかの変数を新しい値でバインドすることにより、新しいコンテキストを作成します。[x 1]値1を変数xにバインドすることを意味します。しかし、xの外側はlet変わりません。

あなたがしたいことは:

(defrecord Learning [Name Age Gender])

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