Eşit olarak karşılaştıracak öğeler içerebilen bir Listem var. Benzer bir Liste istiyorum, ancak bir öğe kaldırıldı. Yani (A, B, C, B, D) 'den, örneğin (A, C, B, D) elde etmek için sadece bir B'yi "kaldırabilmek" istiyorum. Sonuçtaki öğelerin sırası önemli değil.
Scala'da Lisp'den esinlenerek yazılmış bir çalışma kodum var. Bunu yapmanın daha deyimsel bir yolu var mı?
Bağlam, iki deste standart kartın oyunda olduğu bir kart oyunudur, bu nedenle yinelenen kartlar olabilir, ancak yine de birer birer oynanır.
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)
}