2014-10-05 199 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