3

私は Scala を学んでおり、99 個の Scala の問題に取り組んでいます。次の演習の場合:

ネストされたリスト構造をフラット化します。例:

scala> flatten(List(List(1, 1), 2, List(3, List(5, 8))))
res0: List[Any] = List(1, 1, 2, 3, 5, 8)

解は次のように与えられます。

def flatten(ls: List[Any]): List[Any] = ls flatMap {
  case ms: List[_] => flatten(ms)
  case elements => List(elements)
}

しかし、なぜ次のことがうまくいかないのだろうと思っていましたか?

def flatten[A](ls: List[List[A]]): List[A] = ls flatMap {
  case ms: List[_] => flatten(ms)
  case elements => List(elements)
}

IntelJ IDEA は、「そのような署名では参照のフラット化を解決できません」と言って、問題がその部分flatten(ms)にあることを教えてくれます。Listflatten

2番目のコードが機能しない理由はありますか?

4

2 に答える 2

1

他の誰かが別の質問をしましたが、同じ例を使用しています。

各ステップを分解して、ここで説明します

于 2016-05-25T10:05:12.780 に答える