如何在 Clojure 中创建一个空集合?
How to create an empty collection in Clojure?
我正在尝试使用 Clojure 对一组特定数据进行建模,这些数据是
- 定义不明确(我在处理这些数据时正在找出最佳结构)并且
- 逐渐完善(当我第一次声明某个对象时,我对它知之甚少,随着我在这个项目中的工作,我对它的了解越来越多,并想在 Clojure 中捕获它)。
一开始,我希望那条复杂的数据只是一个空集合。此时我不关心它是列表、集合还是向量。
(ns clojure-playground.core
(:gen-class))
(def my-complex-object (hash-set))
当我编译此文件并在 REPL 中输入 (my-complex-object)
时,出现错误。
同
(def my-complex-object ())
,
(def my-complex-object [])
,
(def my-complex-object (list))
,以及
(def my-complex-object '(list))
.
如何将 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
=> []
请注意,对于 conj
、pop
或处理重复等操作,每种集合类型都有不同的行为。
我正在尝试使用 Clojure 对一组特定数据进行建模,这些数据是
- 定义不明确(我在处理这些数据时正在找出最佳结构)并且
- 逐渐完善(当我第一次声明某个对象时,我对它知之甚少,随着我在这个项目中的工作,我对它的了解越来越多,并想在 Clojure 中捕获它)。
一开始,我希望那条复杂的数据只是一个空集合。此时我不关心它是列表、集合还是向量。
(ns clojure-playground.core
(:gen-class))
(def my-complex-object (hash-set))
当我编译此文件并在 REPL 中输入 (my-complex-object)
时,出现错误。
同
(def my-complex-object ())
,(def my-complex-object [])
,(def my-complex-object (list))
,以及(def my-complex-object '(list))
.
如何将 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
=> []
请注意,对于 conj
、pop
或处理重复等操作,每种集合类型都有不同的行为。