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