Clojure中的点破折号与点前缀

Aka*_*ain 2 clojure

在访问Clojure中的defrecord字段时,为什么点破折号优先于点前缀?

例如:-

(defrecord Person [name age])

(def person1 (Person. "Ak" 28))

(.-name person1)
"Ak"

(.name person1)
"Ak"
Run Code Online (Sandbox Code Playgroud)

小智 5

.-用于表示Clojure互操作中的字段访问,只是.在调用方法。

无论哪种方式,如对该问题的评论中所述,使用关键字as in :name是访问该name字段的惯用方式。

其他方法之所以起作用,是因为记录的部分构建是为了支持与宿主语言的互操作。


请记住,对于通常使用Clojure进行数据建模,首选使用地图。这是一个方便的流程图,用于为您的情况选择正确的数据类型。