如何在 Clojure 中对字符串向量进行类型提示?

Jos*_*Fox 2 types clojure

我的函数返回一个序列,例如字符串向量。

这是一个简单的例子(实际上是从类型推断中得出的,但它说明了这一点):

(defn ^PersistentVector myfunction [a b] 
    ;; do something with strings
)

(my-function  ["A" "B"])
Run Code Online (Sandbox Code Playgroud)

我如何输入提示以表明这些是特定的字符串?

就像是^PersistentVector<String>

Erw*_*ers 7

APersistentVector可以包含任何类型的对象,无法强制执行内容的类型,因此不存在此类类型提示的表示法。您可以让它返回一个 Java 字符串数组,然后您可以使用方便的类型提示(defn ^"[Ljava.lang.String;" function [a b])

(defn ^"[Ljava.lang.String;" function [a b]
  (into-array String [a b]))

(type (function "a" "b"))
;; => [Ljava.lang.String;

Run Code Online (Sandbox Code Playgroud)