2009-02-03 3 views
5

Clojure 프로그램에서 콘솔 입력을 얻으 려하지만 프로그램의 해당 부분에 도달하면이 오류가 발생합니다.Clojure read-line function 문제

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

'읽기'기능이 작동하지만 필요한 것은 아닙니다. 여기에 제가 사용하고있는 코드가 있습니다.

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

편집이 :

그것은 분명 내가 사용 단지 버전입니다. 그것은 프로그래밍 Clojure의 현재 샘플 코드에 포함 된 버전입니다. 현재 릴리스 버전을 테스트하고 이것이 문제인지 확인해 보겠습니다.

+0

http://github.com/stuarthalloway/programming-clojure/tree/master에서 그냥 fyi입니다. Halloway는 그가 현재 사용하고있는 책에 사용하는 버전 인 clojure 및 clojure-contrib의 사본을 포함합니다. – Runevault

+0

그래, 그게 실패한 사람이야. – Rayne

답변

3

흠, 나를 위해 작동하는 것 같습니다. Clojure의 어떤 버전을 사용하고 있으며 프롬프트 읽기를 어떻게 부르십니까? 여기에 내가 다시 얻고 무엇을 (여기 goo 내 반응이다) :

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

네, 그게 문제였습니다! 감사! – Rayne

+1

물론. 최근에 Clojure가 많이 바뀌었기 때문에 책의 첫 번째 베타 버전과 현재 베타 버전 사이에 유사한 문제가 많이 발생했습니다. (하지만이 문제는 곧 진정 될 것입니다.) –

1

읽기 줄 문제는 알려진 버그이었다. 그것은 고쳤다. Clojure 버전을 업데이트하십시오.