scala> 1 +: List(2, 3) res0: List[Int] = List(1, 2, 3) scala> 1 +: 2 +: List(2, 3) res1: List[Int] = List(1, 2, 2, 3) scala> 1 :: 2 :: List(2, 3) res2: List[Int] = List(1, 2, 2, 3) scala> "hoge" ++ List("fuga", "bar") res3: scala.collection.immutable.IndexedSeq[Any] = Vector(h, o, g, e, fuga, bar) scala> "hoge" :: List("fuga", "bar") res4: List[String] = List(hoge, fuga, bar)
最後から2番めのやつだけども、なんでこうなるのかよくわからなかったけど、++だと前の要素もリスト扱いになるので、List(h, o, g, e)みたいなかんじになるんですね。はい。
Scalaコレクションメソッドメモ(Hishidama's Scala collection method Memo)
だから、++で同じようなことをIntでやっても死ぬんですね。
scala> 1 ++ List(2, 3) <console>:11: error: value ++ is not a member of Int 1 ++ List(2, 3)