[解決済み] イミュータブルリストから1つの要素を「削除」するScalaのイディオム的な方法は何ですか?
2023-03-08 10:28:45
質問
等しいと比較される要素を含むリストがあります。同じようなリストが欲しいのですが、1 つの要素を削除する必要があります。つまり、(A, B, C, B, D) から 1 つの B を削除して、たとえば (A, C, B, D) を得ることができるようにしたいのです。結果における要素の順序は重要ではありません。
私はScalaでLispにインスパイアされた方法で書かれた、作業コードを持っています。これを行うより慣用的な方法 があるのでしょうか?
コンテキストは、標準的なカードの2つのデッキがプレイされているカードゲームで、したがって、重複するカードがあるかもしれません。 重複するカードがあっても、一度に1枚ずつプレイされます。
def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = {
if (Nil == right) {
return left
}
if (c == right.head) {
return left ::: right.tail
}
return removeOne(c, right.head :: left, right.tail)
}
def removeCard(c: Card, cards: List[Card]): List[Card] = {
return removeOne(c, Nil, cards)
}
どのように解決するのですか?
上記の回答でこの可能性は見当たりませんでしたので。
scala> def remove(num: Int, list: List[Int]) = list diff List(num)
remove: (num: Int,list: List[Int])List[Int]
scala> remove(2,List(1,2,3,4,5))
res2: List[Int] = List(1, 3, 4, 5)
編集する
scala> remove(2,List(2,2,2))
res0: List[Int] = List(2, 2)
お守りのように :-).
関連
-
[解決済み] リストから要素を削除しようとすると、UnsupportedOperationExceptionが発生するのはなぜですか?
-
[解決済み] LINQを使用してList<T>から要素を削除する
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] リストの要素を値で削除する簡単な方法はありますか?
-
[解決済み] リストから最初の項目を削除するには?
-
[解決済み] リストの順番を維持したまま、重複を削除するにはどうしたらいいですか?
-
[解決済み] 文字列の一覧から空の文字列を削除する
-
[解決済み] C#でList<T>から重複を削除する
-
[解決済み] Dartのリストで重複を削除するには? list.distinct()?
-
[解決済み] KotlinでList<T>を初期化するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リストを固定数のリストに分割する。
-
[解決済み] Rのデータフレームを一行ずつ作成する
-
[解決済み] Dartのリストで重複を削除するには? list.distinct()?
-
[解決済み] java.util.ListをScalaのリストに変換する方法
-
[解決済み] Dart: 0からNまでのリストを作成する
-
[解決済み] R: リスト内のオブジェクトの数を数える[closed]。
-
[解決済み] なぜmap, fmap, liftMがあるのですか?
-
[解決済み] KotlinでList<T>を初期化するには?
-
[解決済み] Pythonでオブジェクトのリストから属性のリストを抽出する