Подтвердить что ты не робот

Как получить пользовательский ввод в Clojure?

В настоящее время я изучаю clojure, но мне было интересно, как получить и сохранить ввод пользователя в программе clojure. Я смотрел на clojure api, и я нашел функцию, называемую read-line, однако я не уверен, как ее использовать, если она правильная функция для использования...

Во всяком случае, как вы получаете пользовательский ввод в clojure?

4b9b3361

Ответ 1

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!

Ответ 2

Помните, что у вас есть доступ ко всей 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))

Могу сказать, что можно использовать знания Java и самой Java в Clojure. Это одна из его основных, рекламируемых сильных сторон.

Интересно, что бы мой счет был, если вопрос касался ввода пользователем из графического интерфейса!

Кстати, вы могли бы использовать JOptionPane для установки небольшого GUI, чтобы получить пользовательский ввод...

Ответ 3

read-line используется для ввода пользовательского ввода и использования, чтобы привязать его к некоторой переменной.

Например: если вы хотите прочитать идентификатор пользователя и пароль от пользователя и отобразить его, вы можете использовать следующий фрагмент кода

(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) ))