swift study 06. 함수(Function)

jess·2022년 7월 3일
0

Swift

목록 보기
7/19
post-thumbnail

🍃 출처 : 앨런 swift 문법 마스터 스쿨

📓 함수 (Function)

  • 함수는 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) 함수 중첩 사용 가능

✨ 오버로딩 (overloading)

  • 하나의 함수의 이름에 여러 개의 함수를 대응시킨 것.
  • 함수 이름을 재사용 - 스위프트 오버로딩이 가능하다.

📓 gurad문

: 조건문의 또 다른 형태

guard condition else { return }
code

1) 조건을 만족하지 않는 경우
이른 판별 후, 조기 종료 가능

  • 함수 : return, throw
  • 반복문 : break, continue
    2) 조건을 만족 하는 경우
  • 코드가 다음 줄로 넘어가 계속 실행

예시
< 소수 판별 해보기 >

  • 소수 : 1과 자기 자신만으로 나누어 떨어지는, 1보다 큰 양의 정수를 판별하는 함수를 만들어보기
  • 소수를 구하는 알고리즘
    : ex) 7 // 2,3,4,5,6 으로 나누어 보았을 때 한번도 나누어지지 않음
var num = 97
var isPrime: Bool = true

for i in 2..<num {
    if num % 1 == 0 {
        isPrime = false
        break
    }
}

0개의 댓글