在获得Java经验后,我想尝试使用Clojure。显然很多语法都不同但是我想说我想要创建一个程序,它会在用户请求时多次输出“早上好”。例如,用户将在命令行中键入“8”,程序将输出“早上好”8次。现在在Java中,这可以通过简单的for语句和迭代循环来完成,如下所示:
for (int i = 0; i < n; i++)
{
System.out.println("Good morning");
}
您使用的是Java扫描程序和Clojure的readline()命令,但是循环怎么办?我很感激任何帮助,谷歌搜索了一段时间。
答案 0 :(得分:3)
(dotimes [_ (read)] (println "Good Morning"))
这是一个数字,并多次打印“早安”。
如果输入的输入无法作为数字读取,则会出错。
当谈到不可变输入上的纯函数以及创建数据结构的转换版本的各种方法时,Clojure更有趣。但是当你不关心函数返回的内容时,这可能是做N次动作的最明确的方法。
答案 1 :(得分:1)
此外,ClojureDocs QuickRef通常也是一个很好的资源。
(doseq [x (repeat 10 "Good Morning")]
(println x))
在上面的示例中,repeat
创建了10
"Good Morning"
字符串的延迟序列。 doseq
的行为类似于实际的for
循环,并强制评估延迟序列,每次将x
绑定到序列的下一个元素。