【发布时间】:2014-11-08 16:34:28
【问题描述】:
将Options 添加到List 的最佳方法是什么。
这是我的第一次尝试:
def append[A](as: List[A], maybeA1 : Option[A], maybeA2: Option[A]) : List[A] = as ++ maybeA1.toList ++ maybeA2.toList
Con : 它创建 2 tmp List
(我知道 .toList() 是可选的,因为存在从 Option[A] 到 Iterable[A] 的隐式转换)
另一个尝试是
def append2[A](ls: List[A], maybeA : Option[A]) : List[A] = maybeA.map(_ :: ls).getOrElse(ls)
def append[A](as: List[A], maybeA1 : Option[A], maybeA2: Option[A]) : List[A] = append2(append2(as, maybeA1), maybeA2)
性能更好,但可读性较差……
还有其他方法吗?
【问题讨论】:
-
为什么要将 Option[A] 添加到 List[A]。你确定要看看有什么值得补充的吗?
-
不要添加到列表的末尾。
-
是的,我讨厌成为 Stack Overflow 上的那个人,但如果你发现自己在结尾,那么值得一问:你在这里使用
List是否真的有原因(而不是其他类型的序列)?
标签: scala collections