欢迎!有关本平台的更多信息,请参阅关于页面。
元数据的文档https://clojure.org/reference/metadata中有一句让人困惑的话,我认为它在语法上是不正确的。
这句话是:这个结果的其中一个就是给惰性序列应用元数据会实现序列的头部,以保证两个对象可以共享相同的序列。
请有人能正确地解释第三段第二句话的意思吗?
这两个对象(两者)是什么?这两个对象之间共享的是什么序列?
由于这句术语不明确,我不完全确定它的意思。但以下是我尝试对这句话进行修正的内容。请随意对我的修正进行纠正。
话虽如此,元数据及其与对象A的关系是不变的 - 具有不同元数据的对象B是不同的对象。其中一个结果是,在A上应用元数据(如果A是惰性序列)将会实现序列的头部,使得对象A和B可以共享同一个元数据。
更多讨论可以在这里找到 https://clojurians.slack.com/archives/C03S1KBA2/p1625827141061700
有关“序列”一词的使用存在冲突。一个小实验表明,它的意思是“...使两个对象可以共享相同的尾部”。
clj꞉user꞉> (def A (map inc (range))) #'user/A clj꞉user꞉> (def B (with-meta A {:foo "baz"})) #'user/B clj꞉user꞉> (identical? A B) false clj꞉user꞉> (identical? (rest A) (rest B)) true