proxy和reify有什么区别?我有一些示例代码:
(.listFiles (java.io.File. ".")
(proxy
[java.io.FileFilter] []
(accept [f]
(.isDirectory f))))
(.listFiles (java.io.File. ".")
(reify
java.io.FileFilter
(accept [this f]
(.isDirectory f))))
Run Code Online (Sandbox Code Playgroud)
结果是一样的,当使用代理或reify时,有什么更好的?
更新:
我发现了一些东西
this作为第一个参数.在Python中,您可以将列表或元组传递给函数,并让函数解包参数.我怎么能在Clojure中做到这一点?这是一些示例Python代码:
def f (a, b, c, *d):
print "a: ", a
print "b: ", b
print "c: ", c
print "d: ", d
f (1, 2, 3, 4, 5, 6)
print
v = (4, 5, 6)
f(1, 2, 3, *v)
Run Code Online (Sandbox Code Playgroud)
结果:
a: 1
b: 2
c: 3
d: (4, 5, 6)
a: 1
b: 2
c: 3
d: (4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
在我的clojure代码中:
(defn f [a b c & d]
(println "a: " a)
(println "b: " b)
(println "c: " …Run Code Online (Sandbox Code Playgroud) clojure ×2