繁体   English   中英

我如何遍历 Clojure 中的集合?

[英]How can i loop through a Collection in Clojure?

我有一个矩阵,我想打印它的行。 我试图像这样实现它,但我不知道如何循环并获取其他元素!

(defn p! [args]
 (println (first args))
 (drop args))

(p! [[1 2] [3 4]]) --> [1 2]

the output should look like this 
;; 12
;; 34

我建议使用core.matrix工具来完成这项任务。 它拥有成熟且久经考验的 API。 除此之外,它还为您提供了一个pm function,它可以漂亮地打印一个矩阵并接受一个自定义元素formatter作为参数。

您可能会发现它的实现很有趣,因为它可以让您了解打印类似数组的结构。 (TL;DR:它使用递归算法来处理它,该算法大量使用了dotimes fn。)

有了这个库,你最终可能会实现你的p! fn 像这样:

(require '[clojure.core.matrix :as mx])

(defn p! [args]
  (mx/pm (mx/matrix args)))

(p! [[1 2] [3 4]])
[[1 2]
 [3 4]]
=> nil

如果您想保持简单和/或省略括号,那么最简单的实现将遵循以下几行:

(defn p! [args]
  (doseq [row args]
    (println (clojure.string/join " " row))))

(p! [[1 2] [3 4]])
1 2
3 4
=> nil

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM