【发布时间】:2017-08-10 20:33:41
【问题描述】:
我想要 scala 中三个 Seq 的笛卡尔积(组合)。其中任何一个都可以为空。我知道任何带有空集的集合的笛卡尔积都是空集。我想要一个解决方法来提供一个默认值(下面的例子中的“”)。这是骨架代码。
val letters = Seq("a", "b")
val numbers = Seq("1")
val empty: Seq[String] = Nil
// Desired output = Seq(("a", "1", ""), ("b", "1", ""))
// Cartesian product
// What I'm trying which returns List()
for {
l <- letters
n <- numbers
e <- empty
} yield {
(l, n, e)
}
到目前为止,我已经尝试过 lift 和 orElse(Seq(""))。 orElse 的问题是它返回一个 PartialFunction,我失去了映射或 flatMap 的能力。
【问题讨论】:
-
e <- if (empty.isEmpty) Seq("") else empty? -
谢谢!陷入 orElse 和其他令人困惑的事情