【发布时间】:2015-08-18 06:19:52
【问题描述】:
我希望这个函数准确地返回它所传递的内容(作为参数传入):
(defn log [& txts]
(.log js/console (apply str txts))
txts)
由于txts被返回的那一刻,这与传入的调用者不完全相同。
一旦这个问题得到解答,我将拥有一个能够用作探针的日志记录函数——能够在不改变程序所做的任何事情的情况下包裹任何现有的函数调用。
这是一个 REPL 友好(复制和粘贴,日志函数已更改为适用于 Clojure)示例,它显示日志记录会影响输出:
(def infos [{:colour [0,0,139]} {:colour [255,255,0]} {:colour [0,0,0]} {:colour [255,0,0]}])
(defn log [& txts]
(println (apply str txts))
txts)
(defn random-colour-logged
[]
(let [colour-idx (rand-int 4)]
(log (:colour (get infos colour-idx)))))
(defn random-colour-not-logged
[]
(let [colour-idx (rand-int 4)]
(:colour (get infos colour-idx))))
(random-colour-logged)
(random-colour-logged)
(random-colour-not-logged)
(random-colour-not-logged)
这是我刚刚收到的输出:
user=> (random-colour-logged)
[255 255 0]
([255 255 0])
user=> (random-colour-logged)
[0 0 139]
([0 0 139])
user=> (random-colour-not-logged)
[255 255 0]
user=> (random-colour-not-logged)
[255 0 0]
【问题讨论】:
-
您能否添加一个示例 - 您所说的“不完全相同”是什么意思?此函数应返回您传入的参数列表。
标签: clojure clojurescript