clojure 中的向量和类型转换

vector in clojure and type casting

 (= ":bar:foo" ((fn [[a b]] (str b a)) [:foo :bar]))

我有几个关于这个 clojure 代码的问题。

  1. 向量中每个元素前面的 : 是怎么回事?
  2. str 如何将 :foo 转换为字符串类型 ":foo"

谢谢

在clojure中,这种元素称为关键字。关键字对自身求值,通常用作值的访问器。

(def x {:a 10, :b 20})

您可以查看类型:

user=> (class :foo)
clojure.lang.Keyword
user=> (type :foo)
clojure.lang.Keyword

可以转换成str:注意前面的:.

user=> (str :foo)
":foo"

如果只想从关键字中获取名称字符串,则:

user=> (name :foo)
"foo"

或者您可以从 str 创建关键字:

user=> (keyword "foo")
:foo