在clojure中符号后面的dot是什么意思

Ram*_*der 4 clojure

我正在阅读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.