我不知道如何避免在clojure上重新替换



我想在用python表达时写这样的东西。

a = int(input())
for i in range(a):
b = input()
print(b)

这就是我实际写的。

(let [a][(read-line)]
(for[i (range [a])]
(defn b[string]
(= (read-line) b)
(println [b]))))

但是现在有很多错误。

类似于 Python 流程。

(doseq [_ (range (Integer. (read-line)))
:let [b (read-line)]]
(println b))

更接近Python代码:

(let [a (Integer. (read-line))]
(doseq [i (range a)
:let [b (read-line)]]
(println b)))

更多功能代码

(mapv println (repeatedly (Integer. (read-line)) read-line))

但更惯用(根据肖恩·科菲尔德(

(run! println (repeatedly (Integer. (read-line)) read-line))

或者这个...

(repeatedly
(read-string (read-line))
(comp println read-line))

在我的头顶上,你可以做这样的事情:

(map (fn [_] (println (read-line))) (range (Integer/parseInt (read-line))))

这里可能有一些比地图更合适的东西,请阅读clojure文档。 clojure标准库有很多很酷的东西:)

编辑:@SeanCorfield评论中提出了一个很好的观点,使用运行! 在这里会是一个更好的选择,因为我们不关心 map 的返回值。

最新更新