如何在单独的行clojure中打印每个列表项?

ris*_*ant 11 clojure

我在clojure中很新.我想在换行中打印每个列表项.我这样想:

user=> (def my-list '(1 2 3 4 5 ))
;; #'user/my-list
user=> my-list
;; (1 2 3 4 5)
user=> (apply println my-list)
;; 1 2 3 4 5
;; nil
Run Code Online (Sandbox Code Playgroud)

但我希望我的输出必须是:

1
2
3
4
5
nil
Run Code Online (Sandbox Code Playgroud)

有谁能告诉我,我怎么能这样做?谢谢.

Sam*_*tep 20

如果您已经有一个函数要应用于单个序列中的每个项目,则可以使用run!而不是doseq更简洁:

(run! println [1 2 3 4 5])
;; 1
;; 2
;; 3
;; 4
;; 5
;;=> nil
Run Code Online (Sandbox Code Playgroud)

doseq当您想要执行的操作比仅将一个函数应用于单个序列中的项目更复杂时,这非常有用,但这里的run!工作正常.


Mag*_*gos 14

这种用例(对序列的每个成员执行一次副作用)是目的doseq.在这里使用就像

(doseq [item my-list]
   (println item))
Run Code Online (Sandbox Code Playgroud)

请注意,这不会打印, nil但会返回它.在REPL中使用它将看到打印的所有表达式的返回值,但在例如作为终端程序启动项目时不会发生.