在 clojure REPL 中,当我输入
(type (seq [0 1 2 3]))
Run Code Online (Sandbox Code Playgroud)
并评估它,我得到了“clojure.lang.PersistentVector$ChunkedSeq”,但“clojure.lang.PersistentVector”本身是clojure中的一个类。为什么有“$ChunkedSeq”,符号“$”是什么意思?
谢谢!
$ 表示这ChunkedSeq
是在PersistentVector 中定义的类。至于什么是分块序列,请参阅四年前的这篇博文,当时 Clojure 1.1 出现:
Clojure 序列函数是惰性的,但是随着 Clojure 1.1 的发布,这种惰性的粒度从一次 1 次更改为一次块模型。换句话说,不是一次一个节点“遍历”一个序列,分块序列提供了一个“窗口”,在 32 个元素宽的序列上查看。