У меня есть список, который может содержать элементы, которые будут сравниваться как равные. Я хотел бы подобный Список, но с одним удаленным элементом. Итак, из (A, B, C, B, D) я хотел бы иметь возможность «удалить» только один B, чтобы получить, например. (A, C, B, D). Порядок элементов в результате не имеет значения.
У меня есть рабочий код, написанный на языке Lisp в 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)
}