2009-07-11 4 views
34

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

Как бы вы ни вводили пользователя clojure?

+0

BTW - не особенно полезно для чтения строки - но (функция DOC) будет печатать использование и документацию для функции, например (doc read-line). – flatline

ответ

44

read-line правильная функция ..

(println (read-line)) 

..would в основном повторяют ввод пользователей:

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

Чтобы использовать его в, если заявление, вы бы, вероятно, использовать пусть:

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

Надеюсь, этого достаточно, чтобы вы начали, потому что это о пределе моего знания Clojure !

25

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

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

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

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

+4

Таким образом, возможность вызова System.console() getPassword()/readLine() - это что? Серьезно, вопрос заключается в том, чтобы вводить пользователя в Clojure ... язык JVM. – Allen

+0

К сожалению. Это должно быть readPassword() выше. – Allen

+8

Ух, здесь Clojure * имеет *, чтобы встретить Java. Если вы собираетесь программировать Clojure таким образом, вы также можете ничего не использовать. – Allen

1

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

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

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

Вы не должны использовать 'read-line' для чтения пароля. Используйте вариант '(.readPassword (System/console)« password: »)' вместо этого, чтобы замаскировать пароль на консоли. – bfontaine

 Смежные вопросы

  • Нет связанных вопросов^_^