【问题标题】:How to create an empty collection in Clojure?如何在 Clojure 中创建一个空集合?
【发布时间】:2021-03-08 13:54:16
【问题描述】:

我正在尝试使用 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 绑定到空集合?

【问题讨论】:

    标签: clojure


    【解决方案1】:

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

    (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 等操作或处理重复项,每种集合类型都有不同的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 2011-02-22
      • 2014-03-28
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多