有一个返回字符序列的函数,我需要修改它以允许将元数据附加到某些字符(但不是全部)。Clojure 不支持原始类型的“with-meta”。因此,可能的选择是:
- 返回 [character, metadata] 的向量序列;
优点:简单,数据和元数据绑定在一起
缺点:需要从向量中提取数据
- 返回两个单独的序列,一个用于字符,一个用于元数据,如果调用者关心元数据,他会同时迭代它们;
优点:调用者不必从每个流元素中提取数据,如果他愿意,可能会丢弃元序列
缺点:需要一次迭代两个 seq,如果需要元数据,调用方会更复杂
- 引入一些包含一个字符并允许将元附加到自身的记录包装器(Clojure 记录实现 IMeta);
优点:数据和元数据绑定在一起
缺点:需要从记录中提取数据
- 你更好的选择。
哪种方法更好?