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

时间:2009-07-11 21:33:45

标签: clojure user-input

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

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

3 个答案:

答案 0 :(得分:52)

read-line是正确的功能..

(println (read-line))

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

Clojure 1.0.0-
user=> (println (read-line))
this is my input
this is my input

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

(let [yayinput (read-line)]
  (if (= yayinput "1234")
    (println "Correct")
    (println "Wrong")))

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

答案 1 :(得分:27)

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

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

System.console()方式:

(let [console (. System console)
     pwd (.readPassword console "tell me your password: ")]
   (println "your password is " pwd))

BufferedReader 方式:

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

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

如果问题是关于GUI的用户输入的话,不知道我的分数是什么!

顺便说一下,你可以使用JOptionPane建立一个小的GUI来获取用户输入......

答案 2 :(得分:1)

read-line用于获取用户输入,并使用let将其绑定到某个变量。

例如:如果您想从用户读取用户ID和密码并显示它,您可以使用以下代码

(defn print-message [pid pw] 
(println "PID : " pid)
 (println "PW : " pw))

(defn inp[]
(println "Enter your PID and password") 
(let[pid (read-line) pw (read-line)] 
(print-message pid pw) ))