У мене є Список, який може містити елементи, які можна порівняти як рівні. Я хотів би отримати подібний список, але з одним елементом, вилученим. Тож із (A, B, C, B, D) я хотів би мати можливість "видалити" лише одну B, щоб отримати, наприклад, (A, C, B, D). Порядок елементів у результаті не має значення.
У мене є робочий код, написаний у Scala натхненним Ліспем. Чи є більш ідіоматичний спосіб зробити це?
Контекст - це карткова гра, де грають дві колоди стандартних карт, тому можуть бути дублікати карт, але все одно грати по одній.
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)
}