如何在 Clojure 中创建一个空集合?

How to create an empty collection in Clojure?

我正在尝试使用 Clojure 对一组特定数据进行建模,这些数据是

一开始,我希望那条复杂的数据只是一个空集合。此时我不关心它是列表、集合还是向量。

(ns clojure-playground.core
  (:gen-class))

(def my-complex-object (hash-set))

当我编译此文件并在 REPL 中输入 (my-complex-object) 时,出现错误。

如何将 my-complex-object 绑定到空集合?

你得到错误,因为这个表达式 (my-complex-object) 调用了名为 my-complex-object 的 function。使用以下定义中的任何一个:

(def my-complex-object #{})
(def my-complex-object (hash-set))
(def my-complex-object ())
(def my-complex-object (list))
(def my-complex-object [])
(def my-complex-object (vector))

然后只计算 my-complex-object (不带括号)。 如果你在 REPL 中同时执行这两项操作,它将如下所示:

(def my-complex-object [])
=> #'clojure-playground.core/my-complex-object
my-complex-object
=> []

请注意,对于 conjpop 或处理重复等操作,每种集合类型都有不同的行为。