프로그램의 흐름을 제어하는 문법으로, 특정 조건이 참인지 거짓인지에 따라 코드 블록을 실행하거나 건너뛸 수 있다.
var age = 15
if age >= 20 {
print("20살이 넘은 성인입니다")
} else if age >= 17 {
print("20살 미만이고 17살 이상인 고등학생입니다.")
} else if age >= 14 {
print("17살 미만이고 14살 이상인 중학생입니다.")
} else {
print("어린이 입니다!")
}
return, break, continue, throw 등)가 필요하다.func checkAge(age: Int) {
guard age >= 20 else {
print("미성년자입니다.")
return
}
print("성인입니다.")
}
💡 Tip: guard 문은 주로 함수나 반복문에서 조건이 맞지 않을 때 빠르게 종료하는 데 사용된다. 이를 "early exit"라고 부른다.
let score = 80
switch score {
case 90...100:
print("A 등급 입니다!")
case 80..<90:
print("B 등급 입니다.")
case 70..<80:
print("C 등급 입니다.")
default:
print("D 등급 입니다.")
}
💡 Tip: switch 문에서 case는 중첩될 수 없으며, 모든 경우를 처리해야 하기 때문에 default 블록을 꼭 포함해야 한다. fallthrough 키워드를 사용해 다음 case로 넘어갈 수 있다.
반복문은 배열이나 범위의 숫자를 반복적으로 접근할 때 사용
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
print(name)
}
var count = 10
while count > 0 {
print(count)
count -= 1
}
💡 Tip: 반복문에서 특정 조건이 맞을 때 반복을 멈추고 싶다면 break 키워드를 사용할 수 있다. 특정 조건에서 현재 반복을 건너뛰고 다음 반복으로 넘어가고 싶다면 continue 키워드를 사용한다.
함수는 재사용이 가능한 코드의 집합으로, 특정 작업을 수행하는 코드 블록
func sayHello(name: String) -> String {
return "\(name)님 안녕하세요!"
}
let greeting = sayHello(name: "Eden")
print(greeting)
func printHello() {
print("안녕하세요!")
}
printHello()
> 연산자 앞뒤로 공백을 넣습니다.// ✅ 함수의 이름은 messageToBirthday로 message to birthday 의 Camel Case
// ✅ 파라미터의 이름은 isTodayBirthDay로 소문자 Camel Case
func messageToBirthday(isTodayBirthDay: Bool) -> String {
// 구현부
}
// ❌ 함수의 이름이 소문자로 시작하지만 Camel Case가 아니여서 읽기 힘들어요.
// ❌ 파라미터의 이름이 소문자로 시작하지만 Camel Case가 아니여서 읽기 힘들어요.
func messagetobirthday(istodaybirthday: Bool) -> String {
// 구현부
}
var numbers = [1, 2, 3, 4, 5]
numbers.append(6)
print(numbers) // [1, 2, 3, 4, 5, 6]
append(), insert()append(_:): 배열의 마지막에 값을 추가insert(_:at:): 특정 위치에 값을 추가var array = [10, 20, 30]
array.append(40) // [10, 20, 30, 40]
array.insert(25, at: 2) // [10, 20, 25, 30, 40]
remove() 메서드들removeLast(): 마지막 값을 제거removeFirst(): 첫 번째 값을 제거remove(at:): 특정 위치의 값을 제거removeAll(): 모든 값을 제거var array = [10, 20, 30, 40, 50]
array.removeLast() // [10, 20, 30, 40]
array.removeFirst() // [20, 30, 40]
array.remove(at: 1) // [20, 40]
array.removeAll() // []
count: 배열의 요소 개수를 반환isEmpty: 배열이 비어있는지 여부를 반환first, last: 배열의 첫 번째, 마지막 요소를 반환(옵셔널로 반환됨)let array = [10, 20, 30, 40, 50]
print(array.count) // 5
print(array.isEmpty) // false
print(array.first) // Optional(10)
print(array.last) // Optional(50)
var uniqueNumbers: Set<Int> = [1, 2, 3, 3]
print(uniqueNumbers) // [1, 2, 3]
insert(_:): 값을 추가remove(_:): 특정 값을 제거removeAll(): 모든 값을 제거var defaultSet: Set<String> = ["A", "B", "C"]
defaultSet.insert("D")
print(defaultSet) // ["A", "D", "C", "B"]
defaultSet.remove("A")
print(defaultSet) // ["D", "C", "B"]
defaultSet.removeAll()
print(defaultSet) // []
count: Set의 요소 개수를 반환isEmpty: Set이 비어있는지 여부를 반환contains(_:): 특정 값이 있는지 여부를 반환var defaultSet: Set<String> = ["A", "B", "C"]
print(defaultSet.count) // 3
print(defaultSet.isEmpty) // false
print(defaultSet.contains("A")) // true
var capitals = ["KR": "Seoul", "JP": "Tokyo"]
capitals["US"] = "Washington, D.C."
print(capitals) // ["KR": "Seoul", "JP": "Tokyo", "US": "Washington, D.C."]
var defaultDictionary = ["A": "Apple", "B": "Banana"]
defaultDictionary["C"] = "Cherry"
print(defaultDictionary) // ["A": "Apple", "B": "Banana", "C": "Cherry"]
defaultDictionary["A"] = "Avocado"
print(defaultDictionary) // ["A": "Avocado", "B": "Banana", "C": "Cherry"]
count: 딕셔너리에 저장된 값의 개수를 반환isEmpty: 딕셔너리가 비어있는지 여부를 반환keys, values: 딕셔너리의 모든 키, 값들을 반환var defaultDictionary = ["A": "Apple", "B": "Banana"]
print(defaultDictionary.count) // 2
print(defaultDictionary.isEmpty) // false
print(defaultDictionary.keys) // ["A", "B"]
print(defaultDictionary.values) // ["Apple", "Banana"]
let greet: (String) -> String = { name in
return "Hello, \(name)!"
}
print(greet("Eden")) // Hello, Eden!
💡 Tip: 클로저는 함수의 파라미터로 전달되거나 함수의 반환값으로 사용할 수 있다. 클로저는 간결하게 작성할 수 있으며, 파라미터 이름을 생략하고 $0, $1 같은 방식으로 사용할 수 있다.
map, filter, reduce 등이 고차 함수에 속한다.let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // [1, 4, 9, 16, 25]
숨 쉴때까지 정독하겠습니다