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

DP_*_*DP_ 0 clojure

我正在尝试使用 Clojure 对一组特定的数据进行建模

  • 没有很好地定义(我正在为这些数据找出最佳结构,同时使用它们)和
  • 逐渐被完善(当我第一次声明某个对象时,我对它知之甚少,因为我正在做这个项目,我对它的了解越来越多,并想在 Clojure 中捕获它)。

一开始,我希望那段复杂的数据只是一个空集合。在这一点上,我不在乎它是列表、集合还是向量。

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

(def my-complex-object (hash-set))
Run Code Online (Sandbox Code Playgroud)

当我编译这个文件并进入(my-complex-object)REPL 时,出现错误。

  • (def my-complex-object ()),
  • (def my-complex-object []),
  • (def my-complex-object (list)), 和
  • (def my-complex-object '(list)).

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

Mar*_*ůda 6

你得到的错误,因为这表达(my-complex-object)通话功能名为my-复杂的对象。使用以下定义中的任何一个:

(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))
Run Code Online (Sandbox Code Playgroud)

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

(def my-complex-object [])
=> #'clojure-playground.core/my-complex-object
my-complex-object
=> []
Run Code Online (Sandbox Code Playgroud)

注意,每个集合类型都有不同的行为操作,例如conjpop或处理重复。