Java 在clojure中按用户请求的次数重复“祝您度过愉快的一天”

Java 在clojure中按用户请求的次数重复“祝您度过愉快的一天”,java,syntax,clojure,Java,Syntax,Clojure,有了Java经验后,我想尝试一下Clojure。很明显,很多语法是不同的,但是假设我想创建一个程序,在这个程序中,它可以根据用户的请求多次输出Good morning。例如,用户将在命令行中键入8,程序将输出Good morning 8次。现在在Java中,这可以通过一个简单的for语句和一个迭代循环来完成,如下所示: for (int i = 0; i < n; i++) { System.out.println("Good morning"); } 您使用sc

有了Java经验后,我想尝试一下Clojure。很明显,很多语法是不同的,但是假设我想创建一个程序,在这个程序中,它可以根据用户的请求多次输出Good morning。例如,用户将在命令行中键入8,程序将输出Good morning 8次。现在在Java中,这可以通过一个简单的for语句和一个迭代循环来完成,如下所示:

for (int i = 0; i < n; i++)    
 {    
 System.out.println("Good morning"); 
 }

您使用scanner for Java和readline命令for Clojure,但是循环又如何呢?如果有任何帮助,我将不胜感激。我已经在谷歌上搜索了一段时间。

查看和的参考资料

另外,一般来说,这是一个很好的资源

(doseq [x (repeat 10 "Good Morning")] 
  (println x))

在上面的示例中,repeat创建了一个由10个Good Morning字符串组成的惰性序列。doseq的作用类似于实际for循环,并强制对惰性序列进行求值,每次都将x绑定到序列的下一个元素。

检查和的引用

(dotimes [_ (read)] (println "Good Morning"))
另外,一般来说,这是一个很好的资源

(doseq [x (repeat 10 "Good Morning")] 
  (println x))
在上面的示例中,repeat创建了一个由10个Good Morning字符串组成的惰性序列。doseq的行为类似于实际的for循环,并强制对延迟序列进行求值,每次都将x绑定到序列的下一个元素

(dotimes [_ (read)] (println "Good Morning"))
这会读取一个数字,并多次打印“早上好”

如果输入的数字不可读,则会出现错误

Clojure在涉及不可变输入上的纯函数以及创建数据结构转换版本的各种方法时更有趣。但是,当您不关心函数返回的内容时,这可能是执行某些操作N次的最清晰方式

这会读取一个数字,并多次打印“早上好”

如果输入的数字不可读,则会出现错误


Clojure在涉及不可变输入上的纯函数以及创建数据结构转换版本的各种方法时更有趣。但是,当您不关心函数返回的内容时,这可能是执行某些操作N次最清晰的方法。

函数式语言中有许多方法可以循环。总的想法是从转换的角度考虑问题,并将打印工作留到最后。这里有两个参数,一个数字和一条消息。答案中显示的repeat函数显示了如何使用这些参数获取消息列表。然后你就可以打印了。循环的两种主要方式是使用递归,或者使用一个为您执行递归的函数。查看for和doseq函数,找出它们的区别。还可以尝试使用递归。readline不是Clojure。函数名为read line,f不是调用函数的有效clojure语法。函数式语言中有许多循环方法。总的想法是从转换的角度考虑问题,并将打印工作留到最后。这里有两个参数,一个数字和一条消息。答案中显示的repeat函数显示了如何使用这些参数获取消息列表。然后你就可以打印了。循环的两种主要方式是使用递归,或者使用一个为您执行递归的函数。查看for和doseq函数,找出它们的区别。还可以尝试使用递归。readline不是Clojure。函数名为read line,f不是调用函数的有效clojure语法。原文的更直接翻译:dotimes[i read]println早上好原文的更直接翻译:dotimes[i read]println早上好