46

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

无论如何,您如何在 clojure 中获取用户输入?

4

3 回答 3

64

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 知识的极限!

于 2009-07-11T21:47:05.073 回答
31

还请记住,您可以访问所有 J​​ava ...

好的,所以也许我应该举一些例子……我的 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 来获取用户输入......

于 2009-07-12T19:06:55.967 回答
2

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) ))
于 2015-05-25T11:13:35.510 回答