2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面获取更多关于如何操作的信息。

0投票
集合

即使原始向量有元数据,由subvec返回的向量也不会有元数据。

示例

(meta (subvec 
       (with-meta [0 1 2 3 4 5] {:foo 42})
       0))
;; nil

预期值

 {:foo 42}

在线演示 在这里

1 答案

0投票

经过一番思考,我认为这是预期行为。通常在集合的“更新”操作(关联、撤销、联合、解散)时保留元数据。在这种情况下,subvec从概念上创建了一个新的集合,它是旧集合的一个子集(select-keys可能是这个类别中的另一个)。因为它是一个新集合,所以我们不会期望它从原始集合复制元数据。

那么subvec接收`0`并返回整个向量的情况怎么办?

此外,select-keys也保留元数据。
...