Swift에서 배타적 논리합 (XOR)

4166 단어 iOSSwiftswift3

개요



Swift에서 배타적 논리합 (XOR)을 계산하는 방법


실현 방법



Int형의 경우



Int
let x = 1
let y = 1
let xor = x ^ y

Bool형의 경우



Bool
let x = true
let y = true
let xor = (x != y)
// let x = true ? 1 : 0
// let y = true ? 1 : 0
// let xor = x ^ y

Bool값을 이용한 산출은 존재하지 않으므로 일단 Int로 변환하면서 산출할 필요가 있다.
코멘트에서 지적 받았습니다. Bool의 xor에는 !=를 사용할 수 있습니다.

샘플 케이스



UICollectionView를 사용하여 아래와 같은 표현을 할 때 사용했습니다.


샘플 코드



샘플
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
    let isDeepLine = 27..<54 ~= indexPath.row
    let isDeepColumn = 3..<6 ~= (indexPath.row % 9)
    let isDeep = (isDeepLine != isDeepColumn)
    cell.backgroundColor = isDeep ? .darkGray : .lightGray
    return cell
}

결론


&& 이나 || 의 조합을 사용하는 것보다 깔끔한 코드로 조건을 쓸 수 있었습니다.
오류나 더 나은 방법이 있으면 댓글/편집 요청을 받을 수 있습니다.
[추기]
코멘트에서 새로운 지견을 얻을 수 있었습니다. tkhp 씨 감사합니다!

좋은 웹페이지 즐겨찾기