2009-07-11 24 views
34

Actualmente estoy aprendiendo clojure, pero me preguntaba cómo obtener y almacenar las entradas de los usuarios en un programa clojure. Estaba mirando la aplicación clojure y encontré una función llamada read-line, sin embargo no estoy seguro de cómo usarla si es la función correcta para usar ...¿Cómo obtener la entrada del usuario en Clojure?

De todos modos, ¿cómo se obtiene la entrada del usuario en ¿Clojure?

+0

BTW - no es particularmente útil para la línea de lectura - pero (función doc) imprimirá el uso y la documentación de la función, por ejemplo (doc read-line). – flatline

Respuesta

44

read-line es la función correcta ..

(println (read-line)) 

..would básicamente eco de la entrada de los usuarios:

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

para usarlo en una sentencia if, lo que probablemente deje de utilizar:

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

Espero que sea suficiente para empezar, porque ese es el límite de mi conocimiento de Clojure !

25

Recuerde también que usted tiene acceso a todos los de Java ...

bien así que tal vez debería presentar algunos ejemplos ... mis habilidades clojure no son buenas por lo que estos ejemplos pueden necesitar un poco de ajuste.

El System.Console() manera:

(let [console (. System console) 
    pwd (.readPassword console "tell me your password: ")] 
    (println "your password is " pwd)) 

El BufferedReader manera:

(print "give me a line: ") 
(let [reader (java.io.BufferedReader. *in*) 
    ln (.readLine reader)] 
    (println "your line is " ln)) 

Mi punto es que uno puede aprovechar el conocimiento de Java y Java en sí, en Clojure. Es una de sus principales fortalezas anunciadas.

preguntarse qué mi puntuación hubiera sido si la pregunta fuera sobre la entrada del usuario desde una interfaz gráfica de usuario!

Por cierto, se puede usar JOptionPane para poner un poco de interfaz gráfica de usuario para obtener la entrada del usuario ...

+4

Así que poder llamar a System.console() 'getPassword()/readLine() es qué? En serio, la pregunta se trata de obtener la entrada del usuario en Clojure ... un lenguaje JVM. – Allen

+0

¡Vaya! Eso debería ser readPassword() arriba. – Allen

+8

Uh, aquí es donde Clojure * tiene * para cumplir con Java. Si vas a programar Clojure de esta manera, es mejor que no uses nada. – Allen

1

línea lectura se utiliza para obtener la entrada del usuario y el uso deje de obligar a alguna variable.

Por ejemplo: si desea leer el ID de usuario y la contraseña del usuario y mostrarlo, puede utilizar el siguiente fragmento de código

(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

No debe usar 'read-line' para leer una contraseña. Utilice una variante de '(.readPassword (System/console)" password: ")' en su lugar para enmascarar la contraseña en la consola. – bfontaine

Cuestiones relacionadas