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

また、Javaのすべてにアクセスできることを忘れないでください...

OK、おそらく私はいくつかの例を提示する必要があります...私の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自体を活用できるということです。これは、宣伝されている主要な強みの1つです。

質問がGUIからのユーザー入力に関するものだったとしたら、私のスコアはどうだったでしょうか。

ちなみに、JOptionPaneを使用して、ユーザー入力を取得するための小さなGUIを配置することができます...

于 2009-07-12T19:06:55.967 に答える
2

read-line を使用してユーザー入力を取得し、let を使用してそれを変数にバインドします。

例: user からユーザー 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 に答える