불리언(Booleans)
Swift에는 Bool이라는 불리언 타입(Boolean type)이 있습니다. 불리언 타입의 값은 참 또는 거짓 중 반드시 하나의 값만 가질 수 있으므로 논리 타입으로 일컬어지기도 합니다. Swift는 true와 false라는 두 개의 불리언 상수 값을 제공합니다. 참고로 변수 대신 상수입니다.
let orangesAreOrange = true
let turnipsAreDelicious = false
위 코드는 다음과 같이 글로 표현할 수 있습니다.
orangesAreOrange 상수에 true를 저장합니다.
turnipsAreDelicious 상수에 false를 저장합니다.
두 상수의 타입은 모두 불리언 타입입니다. 각각 불리언 값인 true와 false가 저장되었기 때문입니다. 지난 글에서 보았던 정수나 부동소수점 타입은 경우에 따라서 Int, Double, Float으로 타입을 명시해 주어야 하지만, true와 false는 무조건 불리언 타입에 속하기 때문에, Swift의 타입 추론 기능은 이 두 상수가 불리언 타입이라고 추론하게 됩니다. 따라서 굳이 불리언 타입이라고 명시하지 않음으로써 코드를 더욱 간결하고 읽기 쉽게 작성할 수 있습니다.
불리언 값은 특히 if문과 같은 조건문을 다룰 때 유용합니다.
if turnipsAreDelicious {
print("순무는 맛있다.")
} else {
print("순무는 맛없다.")
}
원래 if turnipsAreDelicious와 { 사이에 조건문이 있어야 하는데 위 예문에는 조건문이 생략된 상태입니다. 이러한 경우에는 사실 == true라는 조건문이 생략되어 있다고 이해하면 됩니다. ==는 비교 연산자로 ==의 좌우에 있는 것이 서로 일치하는지 비교하는 역할을 합니다. 참고로 =은 대입할 때 사용됩니다.
if turnipsAreDelicious == true {
print("순무는 맛있다.")
} else {
print("순무는 맛없다.")
}
위 코드는 다음과 같이 글로 표현할 수 있습니다.
만약 turnipsAreDelicious이 true와 일치한다면, 즉 조건문이 참이라면 "순무는 맛있다."를 출력합니다. 만약 turnipsAreDelicious이 true와 일치하지 않는다면, 즉 조건문이 거짓이라면 else { 다음에 적힌 "순무는 맛없다."를 출력합니다. 위에서 turnipsAreDelicious 상수는 false로 선언되었습니다. 따라서 turnipsAreDelicious는 true와 일치하지 않으므로 "순무는 맛없다."를 출력합니다.
Swift의 타입 세이프티 기능은 불리언 타입이 아닌 값이 불리언 타입으로 사용되는 것을 방지합니다.
let i = 1
if i {
}
위 코드는 다음과 같이 글로 표현할 수 있습니다.
상수 i에 1을 저장합니다.
if문은 i가 true인지 확인하고자 합니다.
이 if문은 컴파일 오류를 발생시키게 됩니다. 위 if문에서 if i와 { 사이에 조건문이 생략되었습니다. 조건문이 생략되어 있으면 그 자리에 원래 있어야 하는 조건문은 == true입니다. 그렇다면 이 if문은 다음과 같이 다시 작성해 볼 수 있습니다.
let i = 1
if i == true {
}
결국 이 if문은 1 == true가 일치하는지를 비교합니다. 그러나 1은 정수 타입의 값이고 true는 불리언 타입의 값이므로 둘은 서로 일치할 수 없습니다. 참고로 여러 프로그래밍 언어에서는 주로 true를 1에 대응하고 false를 0에 대응하기도 하지만, 그렇다손 치더라도 i에 저장된 1은 정수 타입이므로 불리언 타입인 true와 일치할 수 없습니다. 따라서 이 if문은 컴파일 오류를 발생시킵니다.
let i = 1
if i == 1 {
}
위 코드는 다음과 같이 글로 표현할 수 있습니다.
상수 i에 1을 저장합니다.
if문은 i가 1과 일치하는지 확인하고자 합니다.
상수 i에 저장된 1은 정수 타입의 값입니다. 그리고 if문의 조건문의 1은 정수 타입의 값입니다. 따라서 i와 1은 둘 다 정수 타입으로 서로 일치하므로, 이 if문은 컴파일 오류를 발생시키지 않습니다.
이처럼 Swift의 타입 세이프티 기능 덕분에, 실수로 발생하는 오류를 방지할 수 있으며, 코드를 더욱 명료하게 작성할 수 있습니다.
이 글은 Apple이 제공하는 'The Swift Programming Language 5.2 버전' (https://swift.org)을 번역 및 참고하여 작성하였습니다.
'프로그래밍 팁 > Swift' 카테고리의 다른 글
1-13. Swift - 옵셔널(Optionals) 문법 개념 정리 (0) | 2020.11.11 |
---|---|
1-12. Swift - 튜플(Tuples) 문법 개념 정리 (0) | 2020.11.10 |
1-10. Swift - 타입 앨리어스(Type Aliases) 문법 개념 정리 (0) | 2020.11.08 |
1-9. Swift - 숫자 타입 변환(Numeric Type Conversion) 문법 개념 정리 (1) | 2020.11.07 |
1-8. Swift - 숫자 리터럴(Numeric Literals) 문법 개념 정리 (0) | 2020.11.06 |
댓글