scala、zip中的嵌套序列迭代

scala、zip中的嵌套序列迭代,scala,functional-programming,scala-collections,Scala,Functional Programming,Scala Collections,我有以下案例课程 case class Outer(outerId: Integer, outerName: String, innerSeq:Seq[Inner]) case class Inner(innerName:String, innerAge: Integer, innerId: Integer) 我创建了以下实例 val innerSeq1 = Seq(Inner("in10",10, 0),Inner("in11",11, 1), Inner("in12",12, 2)) v

我有以下案例课程

case class Outer(outerId: Integer, outerName: String, innerSeq:Seq[Inner]) 
case class Inner(innerName:String, innerAge: Integer, innerId: Integer)
我创建了以下实例

val innerSeq1 = Seq(Inner("in10",10, 0),Inner("in11",11, 1), Inner("in12",12, 2))
val innerSeq2 = Seq(Inner("in20",10, 0),Inner("in21",11, 1), Inner("in22",12, 2))
val outerSeq = Seq(Outer(1, "out1", innerSeq1), Outer(2, "out2", innerSeq2 ))
我的目的是创建这样的3元素3元组,我不确定我是否可以使用Zip或如何优雅地完成这项工作(我知道映射,然后映射可以进行迭代,但我不清楚如何获得以下类型的输出)

我想要以下格式的3元组

(外部名称、内部名称、内部id)
序号(
(out1,in10,0),(out1,in11,1),(out1,in12,2),
(out2,in20,0),(out2,in21,1),(out2,in22,2)
)

基本上,我想在迭代
outersequence
时,希望形成三元组并得到这个扁平的三元组输出。最初,我误解了你的问题。您真正想要的东西可以通过
flatMap
和内部
map
实现,如下所示:

outerSeq.flatMap(o => o.innerSeq.map(i => (o.outerName, i.innerName, i.innerId)))
如果您愿意,它可能更容易:

val res = for (o <- outerSeq;
               i <- o.innerSeq)
    yield (o.outerName, i.innerName, i.innerId)

val res=for(那么,你希望每个外部都有一个项目,每个项目都包含每个内部的三个项目,我的解释正确吗?这是正确的。好奇工程师,我想知道我更新的答案是否有问题。如果有-你能指出什么不符合你的要求吗?我只是勾选了:)@curiousengineer,我还添加了一个基于理解的方法,以防您喜欢。谢谢。哪个更实用:)?我记得,在内部,一个被编译成另一个@好奇的工程师,是的,正如链接的文章所说,理解是编译成完全相同的代码。至于哪个更实用,我认为这是一个品味的问题。我认为,为了理解这个特定的例子,可以生成一个更简单、意图更明确的代码。然而,其他人有权提出不同意见。