这是一个例子,它在我们的生产环境中的各种项目中广泛使用,目的是与用于数据库迁移的Java库(Flyway)进行互操作。
<pre>
;; 当你在Clojure中工作与数组,并且希望利用性能(
;; 使用类型提示进行改进),你必须确保数组类型对编译器已知。原始数组的类型提示为
;; ^longs、^chars、^doubles等;对于对象数组,你必须使用一个
;; 繁杂的结构如^[Ljava.lang.String;"
;;
(defn ^:private flyway
^Flyway
[datasource migration-locations]
(Flyway. (doto ^FluentConfiguration
(FluentConfiguration.)
(.dataSource datasource)
(.locations ^"[Ljava.lang.String;" (into-array String migration-locations)))))
</pre>