我正在学习 Scala 并有一个简单的问题:有人可以向我解释为什么以下两组代码会产生不同的结果吗?
def grey0(n: Int): List[List[String]]={
if (n==0) List(Nil)
else for(i<-List("0","1"); j<-grey0(n-1)) yield i :: j
}
相对
def grey1(n: Int): List[List[String]]={
if (n==0) Nil
else for(i<-List("0","1"); j<-grey0(n-1)) yield i :: j
}
第一个选项产生我正在寻找的结果。我不明白的是,为什么第二个选项只返回空列表?我会认为其他结果会影响它,如果有的话,我会得到某种平面列表而不是List[List[String]]
(这是我想要的)。