【发布时间】:2012-12-05 00:51:44
【问题描述】:
我正在学习 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]](这是我想要的)。
【问题讨论】: