【问题标题】:Seq, SeqLike, GenSeq or GenSeqLike?Seq、SeqLike、GenSeq 还是 GenSeqLike?
【发布时间】:2015-06-01 19:44:56
【问题描述】:

创建函数时,我应该将其作为参数SeqSeqLikeGenSeq 还是GenSeqLike? (这么多选择!)

我唯一的要求是我可以map 处理它并生成一个与以前相同数量和顺序的参数的集合。

通常我“编程到接口”并尽可能选择最通用的类​​型。在这种情况下,那将是 GenSeqLike

这是正确的/惯用的吗?

【问题讨论】:

标签: scala types interface idioms


【解决方案1】:

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

那么问题是使用GenSeq 还是SeqGenSeq 的问题在于处理可能是并​​行完成的,这意味着您必须避免使用任何可能违反您期望的操作(例如,与 foreach 求和)。此外,普遍的共识似乎是集合层次结构的GenX 部分使集合过于复杂,并且使得合并并行集合的替代选择变得更加困难。所以我的建议是Seq,除非你很确定你有你想要并行处理的用例。如果您根本不在乎,Seq 更容易为您和该功能的用户推理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 2017-09-11
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多