而不是:
(run-jetty (fn [request] (response "hello")) 6789)
我想要(忽略给定参数):
(run-jetty #(response "hello") 6789)
即,我想使用匿名函数来保存一些输入。很明显,它会在运行时引发错误,因为匿名函数将被赋予一个它不想处理的参数(即请求)。那么实现这一目标的惯用方法是什么?
答案 0 :(得分:3)
这取决于您的确切用途,但我会使用constantly
功能。
(run-jetty (constantly (response "hello")) 6789)
如果您尝试使用匿名函数延迟计算,那么这将无效(提示:在这种情况下使用delay
和force
),但对于环处理程序,它将很好地工作
答案 1 :(得分:3)
我发现我的问题与this one重复。
此外,我发现constantly
确实是常量:它会缓存子序列使用的结果。虽然这不是我想要的,但最好知道:
demo1.core=> (defn foo [] (rand))
#'demo1.core/foo
demo1.core=> (def aa (constantly (foo)))
#'demo1.core/aa
demo1.core=> (aa)
0.8006471724049917
demo1.core=> (aa 1)
0.8006471724049917
demo1.core=> (aa 1 2)
0.8006471724049917
以防万一像我这样的人正在寻找同样的事情。