小编num*_*_cn的帖子

proxy和reify有什么区别?

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作为第一个参数.
  • 代理支持超类.
  • 代理支持参数.

clojure

15
推荐指数
1
解决办法
2738
查看次数

如何构造向量以用作函数参数

在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

9
推荐指数
2
解决办法
5174
查看次数

标签 统计

clojure ×2