Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 向列表中添加新对象并显示它们_Clojure - Fatal编程技术网

Clojure 向列表中添加新对象并显示它们

Clojure 向列表中添加新对象并显示它们,clojure,Clojure,我开始学习clojure,我被这件事困住了,我有java的知识,也许我的方法太像java了,但我真正的问题是,我制作了一个函数,让用户键入一些字符串,现在我想当用户输入这些字符串时,创建一个新对象,然后将其插入列表,以便稍后我可以显示该列表的元素,怎么办?我试过 (defn unesi [] (println "Unesite ime i prezime studenta: ") (let [imePrezime (read-line)] (println "Unesi

我开始学习clojure,我被这件事困住了,我有java的知识,也许我的方法太像java了,但我真正的问题是,我制作了一个函数,让用户键入一些字符串,现在我想当用户输入这些字符串时,创建一个新对象,然后将其插入列表,以便稍后我可以显示该列表的元素,怎么办?我试过

(defn unesi []

   (println "Unesite ime i prezime studenta: ")

   (let [imePrezime (read-line)]
     (println "Unesite index studenta: ")
      (let [index (read-line)]
         (println "Unesite email studenta: ")
         (let [email (read-line)]
          (def s1 {:ime imePrezime :index index :email email})
           (println "Uspjesno ste unijeli studenta!")
         )

       )

   )

   )

我已经成功创建了一个新对象,但它始终是同一个对象,我如何始终添加一个新对象?以及如何将其添加到列表中以稍后显示元素?

我不确定您是否从clojure开始使用正确的示例。Clojure,你只是想改变一些东西

尽管如此,还是要回答你的问题

  • 我使用
    students
    作为函数调用之间的列表状态

  • 我定义了一个本地函数
    readinput
    ,该函数打印输入消息,然后读取该行以供重用

  • 每个新的
    学生
    都会进入现有的
    学生
    列表,并且该列表会与新的学生交换

  • 代码:

    然后,您可以使用操作员
    @

    user> @students
      =>  [{:ime "guille", :index "3", :email "guille@email"} 
           {:ime "cacho", :index "pedro", :email "lala"}]
    

    Shile,@GuillermoWinkler的回答解决了您的具体问题,他指出您的示例可能不是正确的开始。但从另一个意义上说,如果你换一个角度看,这可能是一个很好的起点。也许你不需要改变同一个对象。在Clojure中,丢弃不再需要的数据结构并创建一个新的数据结构通常是有意义的。这可能更容易。Clojure强调不可变的数据结构以支持多处理器的有效使用,其一个后果是可变的数据结构更难使用。
    user> @students
      =>  [{:ime "guille", :index "3", :email "guille@email"} 
           {:ime "cacho", :index "pedro", :email "lala"}]