私は Scala を学んでいて、簡単な質問があります。次の 2 つのコード セットが異なる結果をもたらす理由を誰か説明してもらえますか?
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
}
最初のオプションは、私が探している結果をもたらします。私が理解できないのは、なぜ2番目のオプションが空のリストを返すだけなのですか? 私は他の結果がそれに不利になると思っていたでしょうし、どちらかといえば、List[List[String]]
(私が欲しいものです)ではなく、ある種のフラットリストを取得するでしょう。