我看到像
这样的Clojure函数(defn strFun
[#^String str]
(...))
我想#^String
是类型提示,但#
之前的^
和String
是什么?
答案 0 :(得分:5)
这是在^TagName
之前指定简单元数据标签的旧格式。您将在不时在此过渡期间编写的代码中看到它,但不需要使用它。
user> #^String ["hello"]
["hello"]
user> (meta #^String ["hello"])
{:tag java.lang.String}
与不使用#
user> (meta ^String ["hello"])
{:tag java.lang.String}
user>
PS:在这个例子中,我使用标签java.lang.String标记了一个向量。需要注意的是,您将用作标记的符号将被解析,符号解析为的值将用作标记。所以你不能使用未定义的符号。