Scalaの::と:::の違いは何ですか


82
val list1 = List(1,2)
val list2 = List(3,4)

その後

list1::list2 returns:

List[Any] = List(List(1, 2), 3, 4)

list1:::list2 returns:

List[Int] = List(1, 2, 3, 4)

私は本がそれを使用::すると結果も生じると書いているのを見ましたList[Int] = List(1, 2, 3, 4)。私のScalaバージョンは2.9です。

回答:


115

::単一のアイテムを:::前に付けますが、完全なリストを前に付けます。したがって、そのList前にを置くと、::1つのアイテムと見なされ、ネストされた構造になります。


パフォーマンス上の理由から、との間に違いは::あり:::ますか?
null

2
パフォーマンスがあるべきO(n)n付加する要素の数です。
デビルスキー2015年

私が間違っている場合は訂正してください。ただし、この操作は追加ではなく追加ではありませんか?
JanacMeena19年

例では、それははるかに簡単に理解することになるだろう
techkuz

18

一般に:

  • :: -リストの先頭に要素を追加し、追加された要素を含むリストを返します
  • ::: -2つのリストを連結し、連結されたリストを返します

例えば:

1 :: List(2, 3)             will return     List(1, 2, 3)
List(1, 2) ::: List(3, 4)   will return     List(1, 2, 3, 4)

あなたの特定の質問では、を使用::するとリスト内のリスト(ネストされたリスト)になるので、を使用することをお勧めします:::

参照:公式サイトのクラスリスト

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.