Tôi có một Danh sách, có thể chứa các phần tử sẽ được so sánh như nhau. Tôi muốn có một Danh sách tương tự, nhưng đã loại bỏ một phần tử. Vì vậy, từ (A, B, C, B, D) tôi muốn có thể "loại bỏ" chỉ một B để có được ví dụ: (A, C, B, D). Thứ tự của các phần tử trong kết quả không quan trọng.
Tôi có mã làm việc, được viết theo cách lấy cảm hứng từ Lisp trong Scala. Có cách nào dễ hiểu hơn để làm điều này không?
Bối cảnh là một trò chơi đánh bài mà hai bộ bài tiêu chuẩn đang diễn ra nên có thể có những quân bài trùng nhau nhưng vẫn được chơi một lượt.
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)
}