Swift에서 배타적 논리합 (XOR)
개요
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 씨 감사합니다!
Reference
이 문제에 관하여(Swift에서 배타적 논리합 (XOR)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/m_orishi/items/433e3cd3c54fc013ad96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)