読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

リストの結合について

Scala
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)