✅ Swift 함수 공부 체크리스트
함수 공부 해야 할것들을 다시 되새김을 하기 위해서 정리를 해보았습니다.
1. 함수의 기본 구조 이해
-
func 키워드
-
함수 이름 정의
-
괄호 안의 매개변수
-
-> 반환 타입
func sayHello() {
print("Hello!")
}
2. 파라미터(Parameter) 있는 함수
-
입력값을 받아 처리하는 함수
-
하나 또는 여러 개의 파라미터
func greet(name: String) {
print("Hi, \(name)!")
}
여러 개 파라미터:
func sum(a: Int, b: Int) -> Int {
return a + b
}
3. 반환값(Return)이 있는 함수
-
함수 결과를 반환하기
-
-> 타입 구문 사용
func getName() -> String {
return "Jiyoo"
}
4. 파라미터와 반환값이 모두 있는 함수
-
가장 기본적인 형태
func multiply(x: Int, y: Int) -> Int {
return x * y
}
5. 파라미터 이름 지정 방식
-
외부 이름과 내부 이름 구분 (_, 생략 등)
func greet(to name: String) {
print("Hello, \(name)")
}
func greet(_ name: String) {
print("Hi \(name)")
}
6. 기본값이 있는 파라미터 (Default Parameter)
func greet(name: String = "Friend") {
print("Hi, \(name)!")
}
7. 가변 파라미터 (Variadic Parameter)
-
파라미터 개수가 정해져 있지 않을 때
func printNames(_ names: String...) {
for name in names {
print("Hello, \(name)")
}
}
8. 반환값이 여러 개인 함수 (Tuple 사용)
func getUserInfo() -> (name: String, age: Int) {
return ("Sujin", 13)
}
9. 함수 안에서 함수 사용 (중첩 함수)
func outerFunction() {
func innerFunction() {
print("Inside inner function")
}
innerFunction()
}
10. 함수 타입(Function Type)과 변수에 함수 저장
func add(a: Int, b: Int) -> Int {
return a + b
}
let operation: (Int, Int) -> Int = add
print(operation(3, 4)) // 7
11. 고차 함수(함수를 파라미터로 받는 함수)
func applyTwice(_ value: Int, _ function: (Int) -> Int) -> Int {
return function(function(value))
}
12. inout 파라미터 – 외부 변수 값 직접 수정
func doubleValue(_ number: inout Int) {
number *= 2
}
13. 함수 오버로딩 (함수 이름은 같고 파라미터만 다름)
func printMessage(_ message: String) {
print(message)
}
func printMessage(_ count: Int) {
print("Count: \(count)")
}
14. 재귀 함수 (자기 자신을 호출)
func factorial(_ n: Int) -> Int {
if n == 1 { return 1 }
return n * factorial(n - 1)
}
15. 클로저와 함수의 관계
-
클로저와 함수의 문법 비교
-
함수형 프로그래밍에 연결
✨ 정리 요약표
항목 |
설명 |
---|---|
기본 함수 |
파라미터 없음, 반환 없음 |
파라미터 사용 |
단일, 다중, 외부/내부 이름 |
반환값 사용 |
단일 반환, 튜플 반환 |
특수 파라미터 |
기본값, 가변, inout |
고급 기능 |
중첩, 함수 타입, 고차 함수, 재귀 |
오버로딩 |
동일한 이름, 다른 파라미터 |
클로저 |
함수처럼 쓰이는 코드 블록 |
이 리스트를 순서대로 실습하며 익힌다면, Swift의 함수 개념을 완벽히 이해할 수 있습니다!
댓글 쓰기