这是一个例子,它散布在我们生产环境中的各种项目里,它用于与一个执行数据库迁移的 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>