在Clojure中创建一个地图条目

Att*_*lio 7 clojure

什么是内置的 Clojure方法(如果有的话),以创建单个映射条目?

换句话说,我想要像(map-entry key value).换句话说,结果应该或多或少相当于(first {key value}).

备注:

  • 当然,我已经尝试过谷歌搜索,只找到了地图入口?但是,此文档没有链接的资源.
  • 我知道(first {1 2})返回[1 2],这似乎是一个向量.然而:
(class (first {1 2}))
; --> clojure.lang.MapEntry
(class [1 2])
; --> clojure.lang.PersistentVector
Run Code Online (Sandbox Code Playgroud)
  • 我检查了源代码,我知道MapEntryPersistentVector都扩展了APersistentVector(所以MapEntry也或多或少也是一个向量).但问题是,我是否可以MapEntry从Clojure代码创建实例.
  • 最后,但并非最不重要:"不,没有内置的方法在Clojure中做到这一点"也是一个有效的答案(我强烈怀疑是这种情况,只是想确保我不小心错过了什么).

Sam*_*tep 9

"不,在Clojure中没有内置的方法"也是一个有效的答案

是的,不幸的是,这就是答案.我会说你能做的最好就是map-entry自己定义一个函数:

(defn map-entry [k v]
  (clojure.lang.MapEntry/create k v))
Run Code Online (Sandbox Code Playgroud)


Ale*_*kov 5

只需指定一个类名,如下所示

(clojure.lang.MapEntry. "key" "val")
Run Code Online (Sandbox Code Playgroud)

或导入类以通过短名称实例化

(import (clojure.lang MapEntry))

(MapEntry. "key" "val")
Run Code Online (Sandbox Code Playgroud)