我正在阅读Programming Clojure,并在src/examples/gulp.clj中遇到了以下代码.我无法跟踪StringBuilder,FileInputStream等之后的点是什么意思 -
(ns examples.gulp
(:import (java.io FileInputStream InputStreamReader BufferedReader)))
(defn gulp [src]
(let [sb (StringBuilder.)]
(with-open [reader (-> src
FileInputStream.
InputStreamReader.
BufferedReader.)]
(loop [c (.read reader)]
(if (neg? c)
(str sb)
(do
(.append sb (char c))
(recur (.read reader))))))))
Run Code Online (Sandbox Code Playgroud)
任何人都可以请一些亮点.
A. *_*ebb 13
类名后面的点只是调用类的构造函数的特殊语法.
(macroexpand '(StringBuilder. "foo"))
;=> (new StringBuilder "foo")
Run Code Online (Sandbox Code Playgroud)
请阅读http://clojure.org/java_interop.