创建函数时,应将SeqSeqLikeGenSeqGenSeqLike用作参数吗? (这么多选择!)

我唯一的要求是我可以对其进行map并产生一个具有与以前相同数量和顺序的参数的集合。

通常,我会“编程到接口(interface)”并选择最通用的类​​型。在这种情况下,这将是GenSeqLike

这是正确/惯用的吗?

最佳答案

SeqLike只是Seq的实现层,允许您指定返回类型。很少是SeqLike而不是Seq的东西,可以说是错误。因此,您不必担心-Like便会感到舒服。 (如果您要构建给定类型的新集合并保持类型正确,请改用CanBuildFrom。)

因此,问题是要使用GenSeq还是SeqGenSeq的问题在于处理过程可能并行进行,这意味着您必须避免使用任何可能违反您期望的操作(例如,对foreach求和)。此外,普遍的共识似乎是集合层次结构的GenX部分使集合过于复杂,并使得合并并行集合的替代选择变得更加困难。因此,我的建议是Seq,除非您非常确定要使用并行处理的用例。如果您根本不在乎,则Seq更容易为您和函数用户推断。

08-28 19:16