将选项[A]预先添加到选项[列表[A]]的惯用法

Edu*_*rdo 2 scala

我有:ox: Option[A]oxs: Option[List[A]].

我想要:

  • ox.get :: oxs.get如果两者都存在则返回.

  • List(ox.get)如果ox存在则返回,oxs但没有.

  • oxs.get如果oxs存在则返回,ox但没有.

  • List()两者都返回None.

我可以用ifs和matches.我只是想知道是否有任何优雅的惯用方式呢?

编辑:我已经测试过:List(ox.map(List(_)), oxs).flatten.flatten它似乎适用于所有四种情况,但它看起来仍然有点难以理解.

Mil*_*bin 7

尝试,

ox.toList ++ oxs.toList.flatten
Run Code Online (Sandbox Code Playgroud)

如果你不介意结果是一个Iterable[Int]而不是一个List[Int]你可以放弃初始toList,

ox ++ oxs.toList.flatten
Run Code Online (Sandbox Code Playgroud)