在这些地方,你需要使用具有类型提示的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=>