我有一个列表,其中可能包含将进行相等比较的元素。我想要一个类似的List,但是删除了一个元素。因此,我希望能够从(A,B,C,B,D)“删除”一个B来获得例如(A,C,B,D)。结果中元素的顺序无关紧要。
我有在Scala中以Lisp启发的方式编写的工作代码。有没有更惯用的方法来做到这一点?
上下文是一种纸牌游戏,其中有两副标准纸牌在玩,因此可能有重复的纸牌,但一次仍玩一次。
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)
}