clojure使用map计算列表向量中的元素
正如你所看到的,我的第一个元素不知怎么被跳过了。。。至少println认为是这样clojure使用map计算列表向量中的元素,clojure,Clojure,正如你所看到的,我的第一个元素不知怎么被跳过了。。。至少println认为是这样 (def example [(:1 :1 :1) (:2 :2 :2 :2) (:3 :3)]) (println example) (defn countEachSequence [vec] (println vec) (let [varName (count vec)] (println varName) ) ) (map #(countEachSequence %) example)
(def example [(:1 :1 :1) (:2 :2 :2 :2) (:3 :3)])
(println example)
(defn countEachSequence [vec]
(println vec)
(let [varName (count vec)]
(println varName)
)
)
(map #(countEachSequence %) example)
期望输出为:
[13][:24][:32]
这是命名组并计算该组中的元素数量 这似乎是您想要的:
(defn count-each-seq [v]
(map (fn [s] [(first s) (count s)]) v))
上述计数每个seq函数返回一个向量序列。你可以稍后再打印。
如果在REPL中运行该函数,结果将立即显示
在代码中有三件事要说:
在编写代码时,应该将核心逻辑和表示分离(在本例中为println)。函数应该返回一个值。
您的参数vec实际上是一个函数名clojure.core/vec。选择与现有函数名不冲突的其他名称。
在单词之间使用破折号是clojure或LISP惯例。因此,像count这样的名称可以计算每个序列,而不是camel大小写。
在第一次计数之后,每个序列[v]映射的定义计数如何v@noisesmith哇!看起来更紧凑。这是一样的,只是利用juxt而不是手动构建向量