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

欢迎!请访问 关于 页面获取更多关于这个站点如何工作的信息。

0
集合

subvec 返回的向量即使在原始向量有元数据的情况下也不包含元数据。

示例

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

预期值

 {:foo 42}

实时演示 在此

1 答案

0

经过一番思考,我认为这是预期的行为。通常在集合上进行“更新”操作时(例如 assoc、dissoc、conj、disj),元数据会被保留。在这种情况下,subvec 实际上创建了一个新的集合,是旧集合的一个子集(select-keys 可能也在这个类别中)。因为这个是新集合,我们不会期望它能从原始的获取元数据的副本。

那么对于 subvec 收到 `0` 并返回整个向量的边缘情况呢?

同样,select-keys 也保留元数据。
...