Как получить пользовательский ввод в Clojure? - PullRequest
39 голосов
/ 12 июля 2009

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

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

Ответы [ 3 ]

52 голосов
/ 12 июля 2009

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!

27 голосов
/ 12 июля 2009

Помните также, что у вас есть доступ ко всем Java ...

Хорошо, так что, возможно, мне следует привести несколько примеров ... мои навыки уловки не очень хороши, поэтому эти примеры, возможно, нуждаются в небольшой подстройке.

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. Это одна из его главных рекламируемых сильных сторон.

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

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

1 голос
/ 25 мая 2015

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

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

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