if
, else if
, else
키워드를 통해 표현한다.Bool
타입 자료형이 와야한다.{}
는 붙여야하며, ()
는 선택사항이다.if(someInteger== 4){
print("it is 4")
}
else{
print("it is not 4")
}
switch
, case
키워드를 통해 표현한다.default
키워드를 사용해야한다!defalut :
대신 case _:
를 사용해도 된다. 똑같은 표현이다. (_
은 와일드 카드 식별자이다.)break
을 따로 명시할 필요없이 알아서 수행이 된다.fallthrough
키워드를 이용하면 된다.switch "hello"{
case "hi":
print("hi")
case "hola":
print("hola")
//fallthrough
case "안녕하세요":
print("안녕하세요")
case "hi":
print("hi")
default :
print("nope")
// 문자열 외에도 정수, 실수 등의 다양한 기본타입에 대해서도 switch문이 가능하다.
switch "hello"{
case "hi", "hola", "안녕하세요":
print("nope")
case "hi":
print("hi")
default :
print("nope")
// 문자열 외에도 정수, 실수 등의 다양한 기본타입에 대해서도 switch문이 가능하다.
...
과 ..<
가 있다.1...3
은 1이상 3이하이고, 1..<3
은 1이상 3미만을 나타낸다.let array = 1..<5 //
for i in array{
print(i)
}
print(array.contains(3)) // true
print(array.contains(2)) // true
print(array.contains(5)) // false
let names = ["lee","kim","hwang","park", "son"]
let count = names.count
for i in 0..<count{
print(names[i])
}
switch someInt{
case 90...100:
print("A")
case 80..<90:
print("B")
case 70..<80:
print("C")
case 60..<70:
print("D")
default:
print("F")
}
enum School{
case elementry
case middle
case high
case university
case colleage
}
let school: School = .middle
switch school{
case .elementry:
print("초등학교")
case .middle:
print('중학교")
case .high:
print("고등학교")
case .university:
print("대학생")
case _:
print("전문학생")
}
case .graduate
라는 케이스가 열거형에 추가되었다고 해보자. 만약 그렇다면 문법적 오류는 발생하지 않지만 논리적 오류
는 발생할 것이다. 이는 졸업생
이 출력되야 하지만 전문학생
이 출력되는 경우일 것이다. 이 경우에 어떻게 하면 좋을까?switch school{
case .elementry:
print("초등학교")
case .middle:
print('중학교")
case .high:
print("고등학교")
case .university:
print("대학생")
@unknown case _:
print("전문학생")
}
@unknown
속성을 default case에 추가한다면, switch 문의 case에 있지 않은 다른 타입이 들어오는 경우에 컴파일 오류를 발생시켜주므로, 안정적으로 문제를 해결할 수 있다.
값 바인딩
을 이용해 튜플의 원소에 switch문으로 접근할 수 있다.
typealias PersonTuple = (name: String, age: Int)
let person: PersonTuple = ("Lee", 20)
switch person{
case ("park", let age):
print("박씨이며 나이는 \(age)입니다.")
case ("kim", let age):
print("김씨이며, 나이는 \(age)입니다.")
case ("lee", _):
print("이씨이며, 나이는 모르겠습니다..") // 와일드카드 식별자를 이용
@unknown case _:
print("누구입니까?")
와일드카드
를 이용하는 것 보다 값 바인딩
을 이용해 접근하는 것이 유용하다!