我試圖解決這個問題的S-99: Ninety-Nine Scala Problems斯卡拉 - 圖案匹配和For循環問題
鑑於在問題P10指定生成的行程長度代碼表12, 構建其未壓縮版本。例如:
scala> decode(List((4, 'a), (1, 'b), (2, 'c), (2, 'a), (1, 'd), (4, 'e)))
res0: List[Symbol] = List('a, 'a, 'a, 'a, 'b, 'c, 'c, 'a, 'a, 'd, 'e, 'e, 'e, 'e)
我試圖圖案元素在列表中匹配,然後用一個for循環來串聯字符,但我已經有了5號線以下編譯錯誤:
type mismatch; found : scala.collection.immutable.IndexedSeq[List[A]] required: List[A]
1 def decode[A](xs: List[(Int, A)]) : List[A] = xs match {
2 case Nil => Nil
3 case x :: xs => {
4 for {
5 i <- 1 to x._1
6 } yield (x._2) :: decode(xs)
7 }
8 }
對不起,但我開始Scala。有人可以解釋爲什麼會發生這種情況,以及如何解決它?
[又一版本](https://gist.github.com/lazyval/bf0208414becf2e4e1ec)(因爲github在代碼格式化的註釋中做了很多不好的事情) –
感謝您的回答=) – user2336315