🍃 출처 : 앨런 swift 문법 마스터 스쿨
- 함수는 func키워드를 사용해서 선언
- ()안에 인자를 받을 수 있게 만들 수도 있고, 반환되는 값이 있는 경우, -> 을 이용해서 반환 타입을 선언
- 인자 (parameter/매개변수) : 함수의 정의에 입력값으로 사용되는 변수
- 인수 (argument) : 함수의 호출에 사용되는 실제 값
- 함수의 기본 형태
func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { /* 함수 구현부 */ return 반환값 }
// 예) // sum이라는 이름을 가지고 // a와 b라는 Int 타입의 매개변수를 가지며 // Int 타입의 값을 반환하는 함수 func sum(a: Int, b: Int) -> Int { return a + b }
func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> Void {
/* 함수 구현부 */
return
}
// 예)
func printMyName(name: String) -> Void {
print(name)
}
// 반환 값이 없는 경우, 반환 타입(Void)을 생략해 줄 수 있다
func printYourName(name: String) {
func 함수이름() -> 반환타입 {
/* 함수 구현부 */
return 반환값
}
// 예)
func maximumIntegerValue() -> Int {
return Int.max
}
func 함수이름() -> Void {
/* 함수 구현부 */
return
}
// 함수 구현이 짧은 경우
// 가독성을 해치지 않는 범위에서
// 줄바꿈을 하지 않고 한 줄에 표현해도 무관합니다
func hello() -> Void { print("hello") }
// 반환 값이 없는 경우, 반환 타입(Void)을 생략해 줄 수 있습니다
func 함수이름() {
/* 함수 구현부 */
return
}
func bye() { print("bye") }
1) 파라미터의 이해
: 변수가 아닌 상수(let)이고, 함수 내부적으로만 쓰이므로 값의 변경이 불가능하다. 변경하려면 새로운 변수로 선언해야 한다.
2) 범위
: 함수 내에서 선언한 변수는 함수 밖에서밖에 사용하지 못한다.
(외부 변수는 함수 내에서 접근 가능하다.)
3) return 키워드
01. return 타입이 있는 함수
: 리턴 키워드 다음의 표현식을 평가한 다음, 그 결과를 리턴하면서 함수를 벗어난다.
02. return 타입이 없는 함수
: 함수의 실행을 중지하고 함수를 벗어난다.
4) 함수의 실행문 (return 타입을 가지고 있는)
: return 타입이 있는 함수를 호출하는 경우, 함수를 호출하는 것 자체로 표현식이다. (결과는 함수가 리턴하는 값)
ex) nameString() == "스티브"
5) 함수 중첩 사용 가능
- 하나의 함수의 이름에 여러 개의 함수를 대응시킨 것.
- 함수 이름을 재사용 - 스위프트 오버로딩이 가능하다.
: 조건문의 또 다른 형태
guard condition else { return } code
1) 조건을 만족하지 않는 경우
이른 판별 후, 조기 종료 가능
- 함수 : return, throw
- 반복문 : break, continue
2) 조건을 만족 하는 경우- 코드가 다음 줄로 넘어가 계속 실행
예시
< 소수 판별 해보기 >
var num = 97
var isPrime: Bool = true
for i in 2..<num {
if num % 1 == 0 {
isPrime = false
break
}
}