야곰의 스위프트 프로그래밍
    • 01
      스위프트 시작하기
    • 시작 전 필독사항
      이름짓기, 콘솔로그, 문자열 보간법
    • 02
      문법
    • 상수와 변수
      기본 데이터 타입
      Any, AnyObject, nil
      컬렉션 타입
      함수 기본
      함수 고급
      조건문
      반복문
      옵셔널
      옵셔널 값 추출
      구조체
      클래스
      열거형
      값 타입과 참조 타입
      클로저
      다양한 클로저표현
      프로퍼티
      프로퍼티 감시자
      상속
      인스턴스의 생성과 소멸
      옵셔널 체이닝과 nil 병합 연산자
      타입캐스팅
      assert와 guard
      프로토콜
      익스텐션
      오류처리
    • 03
      고차함수 활용
    • 고차함수
    • 04
      마무리
    • 더 알아보기
    함수 고급
    배우기
    02 문법
    함수 고급

    매개변수 기본 값

    매개변수에 기본적으로 전달될 값을 미리 지정할 수 있습니다

    기본값을 갖는 매개변수는 매개변수 목록 중에 뒤쪽에 위치하는 것이 좋습니다

    func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 = 매개변수 기본값 ...) -> 반환타입 {
        /* 함수 구현부 */
        return 반환값
    }
    
    func greeting(friend: String, me: String = "yagom") {
        print("Hello \(friend)! I'm \(me)")
    }
    
    // 매개변수 기본값을 가지는 매개변수는 호출시 생략할 수 있습니다
    greeting(friend: "hana") // Hello hana! I'm yagom
    greeting(friend: "john", me: "eric") // Hello john! I'm eric
    

    전달인자 레이블

    함수를 호출할 때 함수 사용자의 입장에서 매개변수의 역할을 좀 더 명확하게 표현하고자 할 때 사용합니다

    func 함수이름(전달인자 레이블 매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입 {
        /* 함수 구현부 */
        return
    }
    
    // 함수 내부에서 전달인자를 사용할 때에는 매개변수 이름을 사용합니다
    func greeting(to friend: String, from me: String) {
        print("Hello \(friend)! I'm \(me)")
    }
    
    // 함수를 호출할 때에는 전달인자 레이블을 사용해야 합니다
    greeting(to: "hana", from: "yagom") // Hello hana! I'm yagom
    

    가변 매개변수

    전달 받을 값의 개수를 알기 어려울 때 사용할 수 있습니다

    가변 매개변수는 함수당 하나만 가질 수 있습니다

    func 함수이름(매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입...) -> 반환타입 {
        /* 함수 구현부 */
        return
    }
    

    위에 설명한 함수의 다양한 모양은 모두 섞어서 사용 가능합니다

    데이터 타입으로서의 함수

    스위프트는 함수형 프로그래밍 패러다임을 포함하는 다중 패러다임 언어이므로 스위프트의 함수는 일급객체입니다. 그래서 함수를 변수, 상수 등에 할당이 가능하고 매개변수를 통해 전달할 수도 있습니다

    함수의 타입표현

    반환타입을 생략할 수 없습니다.

     (매개변수1타입, 매개변수2타입 ...) -> 반환타입
    

    참고 : 스위프트의 전반적인 문법에서 띄어쓰기는 신경써야할 때가 많습니다

    관련문서

    실습 내용
    주어진 함수들을 여러 방법으로 호출해 봅시다.
    질문하기