Function 함수
기본 문법
func name(parameters) -> ReturnType {
statements
}
func ~ ReturnType까지를 Function Head 라고 하고 {}에 속하는 부분은 Function Body라고 한다.
파라미터(input)를 함수에 넣으면 Return값(output)으로 나오는 원리이다.
함수 호출 문법은 functionName(parameters)
그럼 여기서 parameter란 뭘까?
Parameter 파라미터
파라미터 즉 매개변수를 말한다.
함수에 값을 전달하기 위한 변수라는 뜻
어떤 값을 넣어줄 수 있는 "문"과 같은 개념
func greet(name: String) {
print("안녕하세요, \(name)님!
}
여기서 name 이 파라미터이다.
파라미터는 두 종류가 있다.
1. formal parameter 형식 매개 변수
어떤 값이 될지 아직 정해지지 않음.
2. Actual Parameter 실제 매개변수
Argument 인자 라고도 한다
greet(name : "철수")
이렇게 함수를 호출한다고 가정했을 때
여기서 "철수"가 Actual Parameter
name 은 Argument Label
3. Argument Label
func sayHello(with name: String) {
print("Hello, \(name)")
}
sayHello(with: "철수") //Hello, 철수 출력
여기서 with 는 Argument Label, name은 Parameter name
Argument Label 은 함수를 호출할 때 사용되는 이름이고
Parameter name은 함수 내부에서 사용하는 이름이다.
함수 호출문법에서 Argument Label인 with가 들어간 것을 알 수 있다.
Argument Label은 Parameter name 앞에서 언더스코어(_)로 생략가능하고
sayHello("철수")로 생략 가능하다.
Argument Label 생략 규칙
1. 생략하려면 Argument Label 자리에 언더스코어를 사용해야한다.
2. Parameter Name은 반드시 필요하며 생략할 수 없다.
func sayHello(_ name: String) {
print("Hello, \(name)")
}
sayHello("철수") // "Hello, 철수" 출력
3. 가독성 고려 : Argument Label을 생략하면 코드가 더 직관적인 경우 사용한다.
예 ) print("문자열") 처럼 자명한 경우 생략
반대로 add(number1: 3, to: 5 ) 처럼 명확하게 하고 싶을 때는 Label 을 사용한다.
// Argument Label 생략
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
print(add(3, 5)) // 8 출력
// Argument Label 유지
func add(number1 a: Int, to b: Int) -> Int {
return a + b
}
print(add(number1: 3, to: 5)) // 8 출력
return
return 한다 - 함수에서 결과값을 도출해서 함수를 호출한 곳으로 전달한다.
func generateRandomNumber() -> Int {
return 0
}
return 타입에 맞춰서 Function Body ({}안) 도 타입을 맞춰야 한다.
return의 역할
1. 스코프를 즉시 종료하는 역할
func checkNumber(_ number: Int) {
if number < 0 {
print("음수입니다.")
return // 여기서 함수 종료
}
print("양수입니다.")
}
checkNumber(-5) // "음수입니다." 출력 후 함수 종료
checkNumber(10) // "양수입니다." 출력
2. 값을 호출한 곳으로 되돌려주는 역할 , 예) return a+b
주의 사항
리턴형을 쓰면 모든 경로로 값을 return해야 한다.
func checkEven(_ number: Int) -> String {
if number % 2 == 0 {
return "짝수"
}
// 여기서 return을 하지 않으면 에러 발생!
}
func checkEven(_ number: Int) -> String {
if number % 2 == 0 {
return "짝수"
} else {
return "홀수"
}
}
// 모든 경우에서 반드시 값을 반환하도록 수정함.
return type 이 void 타입이면 return키워드 생략 가능
guard문에서 return이 쓰인다면 조기 종료 기능을 하여 안정성과 가독성을 높인다.
'IT > 프로그래밍 노트' 카테고리의 다른 글
028 텍스트필드 Delegate (0) | 2025.03.18 |
---|---|
009 Tuple 튜플 (0) | 2025.03.17 |
027-2 Table view, DataSource, Delegate, 디자인 (0) | 2025.03.16 |
007 옵셔널 바인딩, nil coalescing operator, IUO (0) | 2025.03.15 |
027 Table view , Delegate Pattern (0) | 2025.03.15 |