5
我試圖給Clojure時間宏添加一個選項「message」屬性。基本上我想添加一個可選的自定義消息的時間輸出。我試圖在我的程序中找到一個瓶頸,並且在時間輸出中附加一些描述性消息將會非常有幫助。將可選參數添加到宏
我已經試過如下:
;optional argument
(defmacro time
"Evaluates expr and prints the time it took. Returns the value of
expr."
{:added "1.0"}
[expr & msg]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs. " (first ~msg)))
ret#))
和
(defmacro time
"Evaluates expr and prints the time it took. Returns the value of
expr."
{:added "1.0"}
([expr] (time expr ""))
([expr msg]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs. " ~msg))
ret#)))
兩個拋出異常。我如何完成這項工作?
我一直在使用的核心版本,但這種情況下的調試消息將真正幫助我。有一個更好的方法嗎?也許某種包裝宏?核心版本是否只接受單一表達式? – erikcw
@erikcw是的,你是對的我的不良核心版本也接受一個參數。還添加了一個帶有可選參數的版本 –