2014-10-05 143 views
1

完整的Clojure新手在这里,所以我可能错过了clojure工作的基本方式,但我不理解Clojure评估函数的方式。Clojure打印功能

(defn get-output [] 
    (print "Enter: Width <RTN> Height <RTN> Price <RTN> Shape <RTN>") 
    (print (calculate (read-string (read-line)))) 

我习惯像Ruby或C语言写成,其中第一打印功能将被评估,打印字符串到终端。然后第二个打印功能将被评估,提示用户输入。

但是,实际发生的情况是,终端首先提示用户输入并在之后打印“Enter:Width Height Price Shape”。最后程序输出来自calculate的返回值。

为什么这些打印语句不像我期望的那样执行?

回答

7

这些语句按您期望的顺序执行。问题是print不会刷新出缓冲区。您可以在第一个print声明后致电(flush),或者也可以致电println