2009-02-03 20 views
5

Estoy tratando de obtener entrada de consola en mi programa Clojure, pero cuando me da este error cuando llega a esa parte del programa.Clojure read-line function problem

Exception in thread "main" java.lang.ClassCastException: 
clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader 

la función 'leer' funciona, pero no es lo que necesito. Aquí está el código que estoy usando.

(defn prompt-read [prompt] 
    (print (format "%s: " prompt)) 
    (flush) 
    (read-line)) 

EDIT:

Evidentemente, es sólo la versión que estoy usando. Es la versión incluida en el código de muestra actual de Programming Clojure, probaré la versión de lanzamiento actual y veré si ese es el problema.

+0

Just fyi, en http://github.com/stuarthalloway/programming-clojure/tree/master Halloway incluye una copia de clojure y clojure-contrib que son las versiones que usa para el libro en su forma actual. – Runevault

+0

Sí, esos son los que fallaron. – Rayne

Respuesta

3

Hmm, parece funcionar para mí. ¿Qué versión de Clojure está usando y cómo está llamando la lectura rápida? Aquí es lo que estoy volviendo (aquí goo es mi respuesta):

user=> (defn prompt-read [prompt] 
(print (format "%s: " prompt)) 
(flush) 
(read-line)) 
#'user/prompt-read 
user=> (prompt-read "foo") 
foo: goo 
"goo" 
+0

Sí señor ese era el problema! ¡Gracias! – Rayne

+1

Por supuesto. Clojure ha estado cambiando mucho últimamente, así que me he encontrado con muchos problemas similares entre la primera versión beta del libro y la versión beta actual (pero aparentemente esto se calmará un poco pronto). –

1

El problema de línea de lectura fue un error conocido. Fue arreglado. Actualiza tu versión de Clojure.