私はリストを持っています、それは等しいと比較する要素を含むかもしれません。同様のリストが欲しいのですが、1つの要素が削除されています。したがって、(A、B、C、B、D)から、たとえば(A、C、B、D)を取得するために1つのBだけを「削除」できるようにしたいと思います。結果の要素の順序は重要ではありません。
私は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)
}