这是您需要使用带有类型提示的 let
的地方。
user=> (require '[clojure.java.io :as io])
nil
user=> (import '(java.io File FileFilter))
java.io.FileFilter
user=> (let [dir (io/file ".")
^FileFilter f File/.isDirectory]
(.listFiles dir f))
#object["[Ljava.io.File;" 0x37c5fc56 "[Ljava.io.File;@37c5fc56"]
尽管如此,给
user=> (instance? clojure.lang.IMeta File/.isDirectory)
true
有点令人惊讶,您的原始版本和这个版本似乎都没有正常工作。
user=> (let [dir (io/file ".")
f ^FileFilter File/.isDirectory]
(.listFiles dir f))
Syntax error (IllegalArgumentException) compiling . at (REPL:3:10).
More than one matching method found: listFiles
user=>