2
假設files
是Clojure中Javas File
的列表,我想獲取文件名列表。在Leiningen REPL我可以使用,比如說,Clojure REPL,interop,無法解析符號
(.getName (nth files 4))
=> "image.jpg"
,但如果我用
(map .getName files)
的REPL拋出一個CompilerException java.lang.RuntimeException: Unable to resolve symbol: .getName in this context
。這是爲什麼?
我可以解決此問題
(defn gn [file] (.getName file))
(map gn files)
,但我想現在如果有映射Clojure中的Java方法來列出一個更優雅的方式。
從Rich Hickey自己快速搜索Google小組,並且在這裏:['memfn在#()之前,後者現在是首選的]](https://groups.google.com/d/ MSG/Clojure的/ XX-zt7LYzUI/kUQDg1DDNOsJ)。 – glts
@glts謝謝,是的,我還發現,在文檔中完全相同的聲明,但我更期待*爲什麼*它是首選? – Shlomi
我現在把它看作'memfn',簡直成了不必要的便利。如果'#()'符號從一開始就存在,'memfn'不會被添加到核心 - 所以它可能不是一個強烈的棄用。 – glts