Arrays Clojure更改对象项

Arrays Clojure更改对象项,arrays,object,vector,clojure,Arrays,Object,Vector,Clojure,我是新来Clojure的。我需要在文件中找到项目,更改值并保存,但我无法更改值。我需要制作阵列的新副本吗 文件: 代码: 您的代码没有以任何方式更改数据,这很好,因为它是不可变的,无论如何都不能更改。尝试在更新表单中围绕写入数据调用 还有一件小事:数据应该在-main之外 {:name "John", :index 0} {:name "Ivan", :index 1} {:name "Niki", :index 2} (ns test1.core (:gen-class)) (use

我是新来Clojure的。我需要在文件中找到项目,更改值并保存,但我无法更改值。我需要制作阵列的新副本吗

文件:

代码:


您的代码没有以任何方式更改
数据
,这很好,因为它是不可变的,无论如何都不能更改。尝试在
更新
表单中围绕
写入数据
调用

还有一件小事:
数据
应该在
-main
之外

{:name "John", :index 0}
{:name "Ivan", :index 1}
{:name "Niki", :index 2}
(ns test1.core
  (:gen-class))

(use 'clojure.java.io)
(require '[clojure.string :as str])

(def file-data "names.txt")

(def findName "Ivan")

(defn write-data[xs, file]
  (with-open [wrtr (writer file)]
       (doall (map #(.write wrtr (str % "\n")) xs))))

(defn read-data[file]
  (with-open [rdr (reader file)]
       (doall (map #(load-string %) (line-seq rdr)))))


(defn -main []

  (def data (read-data file-data))

  (doseq [line data]
    (if (= (line :name) findName)
      (update-in line [:index] inc)
        (println "No")))
  (println data))