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