我一直在写一个clojure解析器,并遇到以下语法:
(defn key
"Returns the key of the map entry."
{:added "1.0"
:static true}
[^java.util.Map$Entry e]
(. e (getKey)))
Run Code Online (Sandbox Code Playgroud)
那'''在这里意味着什么?元数据之外的那种语法是否有用处?
这是在Clojure中访问嵌套类的方法.在这种情况下,您正在访问Entry,这是界面内定义的Map接口
在Java中,您只需编写java.util.Map.Entry,在Clojure中您需要使用美元符号:java.util.Map$Entry
'.' 特殊形式是访问Java的基础.它可以被视为成员访问运算符,和/或读作'在'范围内'.
如果第一个操作数是解析为类名的符号,则该访问被视为指定类的静态成员.请注意
EnclosingClass$NestedClass,根据JVM规范命名嵌套类.否则,它被假定为实例成员,并且计算第一个参数以生成目标对象.