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