[解決済み】Scalaのリスト連結、::と++の比較
2022-03-24 07:22:23
質問
との間に違いはあるのでしょうか?
:::
と
++
Scala でリストの連結を行うには?
scala> List(1,2,3) ++ List(4,5)
res0: List[Int] = List(1, 2, 3, 4, 5)
scala> List(1,2,3) ::: List(4,5)
res1: List[Int] = List(1, 2, 3, 4, 5)
scala> res0 == res1
res2: Boolean = true
から
ドキュメント
のように見えます。
++
はより一般的であるのに対し
:::
は
List
-特有のものです。後者は他の関数型言語でも使われているから提供されているのでしょうか?
どのように解決するのですか?
レガシーです。リストは元々関数型言語っぽくなるように定義されていました。
1 :: 2 :: Nil // a list
list1 ::: list2 // concatenation of two lists
list match {
case head :: tail => "non-empty"
case Nil => "empty"
}
もちろん、Scalaは他のコレクションもアドホックに進化させてきました。2.8が出たときに、コードの再利用とAPIの一貫性を最大化するためにコレクションが再設計され、その結果
++
を連結して
任意
2つのコレクション、そしてイテレータまで。しかし、リストは、非推奨になった1つか2つを除けば、元の演算子を維持することができた。
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Haskellを学ぶ。HaskellでListからアイテムを削除する方法
-
[解決済み] TypeError: リストのインデックスは整数でなければならず、floatではない
-
[解決済み] Prolog リストから要素を削除する
-
[解決済み] OCaml標準ライブラリ関数によるリストの並べ替え
-
error C2955: 'std::list' : クラステンプレートの使用にはテンプレート引数のリストが必要です。
-
リストコレクションに関するいくつかの一般的な操作
-
QuerySetを配列に変換する:Pythonのlist()関数を直接使用、list()はstr()やint()に類似しています。
-
[解決済み] Haskellでコマンドラインghciでリストをソートする方法
-
[解決済み】2つのリストを連結する - '+=' と extend() の違い)
-
[解決済み】Homebrewのインストール可能なパッケージのリストを見つけるにはどうしたらいいですか?