在读取输入之前打印文本不起作用[Clojure]

时间:2014-08-05 19:49:11

标签: clojure

由于这是我关于SO的第一个问题,我提出的问题一直困扰着我几个小时。 几天前我开始与Clojure“玩”,并且在处理文本打印时已经过了一个相当有趣的行为。

我写了一个小程序来取一个数字作为输入并打印“ok”或“not ok”当它是3的倍数或不是。我还添加了一行代码来打印文本,要求用户在从stdin读取一行之前输入一个数字。问题是,这个print指令在read-line指令之前,仍然不会打印到屏幕上。我的意思是,不是在实际阅读stdin之前。

问题到底是什么?我不是来自Lisp世界(事实上,CLojure是我的第一个类似Lisp的语言),所以我真的不知道为什么会发生这种情况。任何帮助将不胜感激。

代码:

(defn ok [n]
  (if (= (mod n 3) 0)
    "ok"
    "not ok"))

(defn main []
  (print "Type a number: ") ; This actually prints *after* the read-line instruction
  (flush) ; EDIT: The flush function is the missing part of the code. It's all ok now.
  (let [n (Integer/parseInt (read-line))]
    (println (ok n)))
  (recur)) ; it is supposed to run until Ctrl-C is signalized

(main)

输出图像: http://i.stack.imgur.com/O8Cu0.png

提前致谢!

0 个答案:

没有答案