如何在Clojure中获得用户输入?

JoO*_*oOb 39 user-input clojure

我正在学习clojure,但我想知道如何在clojure程序中获取和存储用户输入.我正在查看clojure api,我找到了一个名为read-line的函数,但是我不知道如果使用它是正确的函数...

无论如何,你如何在clojure中获得用户输入?

dbr*_*dbr 52

read-line 是正确的功能..

(println (read-line))
Run Code Online (Sandbox Code Playgroud)

..基本上会回应用户输入:

Clojure 1.0.0-
user=> (println (read-line))
this is my input
this is my input
Run Code Online (Sandbox Code Playgroud)

要在if语句中使用它,您可能使用let:

(let [yayinput (read-line)]
  (if (= yayinput "1234")
    (println "Correct")
    (println "Wrong")))
Run Code Online (Sandbox Code Playgroud)

希望这足以让你开始,因为那是关于我的Clojure知识的极限!


All*_*len 27

还要记住,您可以访问所有Java ...

好吧也许我应该提供一些例子......我的clojure技能并不好,所以这些例子可能需要一些调整.

System.console()方法:

(let [console (. System console)
     pwd (.readPassword console "tell me your password: ")]
   (println "your password is " pwd))
Run Code Online (Sandbox Code Playgroud)

BufferedReader中的方法:

(print "give me a line: ")
(let [reader (java.io.BufferedReader. *in*)
     ln (.readLine reader)]
   (println "your line is " ln))
Run Code Online (Sandbox Code Playgroud)

我的观点是,人们可以在Clojure中利用Java和Java本身的知识.这是其主要的广告优势之一.

想知道如果问题是关于GUI的用户输入我的分数是多少!

顺便说一句,您可以使用JOptionPane设置一个小GUI来获取用户输入...

  • 呃,这是Clojure*有*见到Java的地方.如果您打算像这样对Clojure进行编程,那么您也可以不使用任何东西. (8认同)
  • geez,这里没有爱java互操作.这是一个很好的答案,花生画廊的沮丧是不必要的.您如何看待读取线的实现?当然,这是使用BurfferedReaders完成的. (8认同)
  • 那么能够调用System.console()的getPassword()/ readLine()是什么?说真的,问题是在Clojure中获取用户输入......一种JVM语言. (4认同)