2017-12-13 7 views
0

의 차이를 얻을 수 있습니다. cardsOnTablecardsInHand 일 수 있습니다. 예를 들어 카드 1을 재생하면 cardsInHand[2,3]이고 카드는 [1]이됩니다. 이 필터를 사용하여 수행 할 수 있지만 cardsInHand에서 제거 된 값이 손실됩니다. I 카드 1 백업, 다음 cardsInHand[1,2,3]되며 cardsOnTable[]신속 내가 다음의 배열이 두 배열

let cardsPlayed = 1 

cardsInHand = cardsInHand.filter { $0 != cardsPlayed } 

print(cardsInHand) 

[2,3] 

될 경우 역 어떻게이 cardsOnTablecardsPlayedcardsInHand 사이의 차이가 얻을 수있는 사실이다?

제목이 오도 된 경우 죄송합니다. 그러나 설명하는 방법을 잘 모르겠습니다. 맵, 축소 또는 필터가이를 처리하는 가장 쉬운 방법 일 수 있다고 생각합니다.

+0

처럼 사용이'cardsInHand.filter {cardsPlayed.contains ($ 0)}'있어야이라고? – Alexander

+0

카드를 필터링하는 대신 카드에 추가해야합니다. 카드에서 카드를 제거 할 때 반납 된 카드를 넣으십시오. 핸드 –

+0

"하지만 카드 인에서 제거 된 값은 손실됩니다." - 그것이 무엇을 의미합니까? –

답변

1

당신은 단순히 당신이 직접 배열로 저장할 수 있습니다, 당신은 코멘트에서 언급 한 것처럼, 삭제됩니다 여러 카드가있는 경우이

let cardsPlayed = 1 
    if let index = cardsInHand.index(of: cardsPlayed) 
    { 
     cardsOnTable += [cardsInHand.remove(at: index)] 
    } 

같은 목표를 달성하기위한 remove(at:) FUNC를 사용할 수 있습니다 cardsOntable

 cardsOnTable += [1,2] 
    cardsInHand = cardsInHand.filter{!self.cardsOnTable.contains($0)} 
+0

let 대신 cardsPlayed = [1,2]를 Int 대신 배열로 사용하면 어떻게됩니까? 귀하의 제안은 훌륭합니다! –

+0

나는 나의 대답을 편집했다. 도움이되거나 질문이있는 경우 회신하여주십시오. 감사 –