반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • 개발
    • map
    • 프로그래밍
    • swift
    • kotlin
    • xcode
    • swfit
    • 구축
    • 예제
    • ios
    • level1
    • reduce
    • 코딩테스트
    • JSP
    • Android
    • IT
    • 프로그래머스
    • 공부
    • 타입
    • Java

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    Swift 함수 고급
    Language/Swift

    Swift 함수 고급

    2021. 3. 9. 17:11
    반응형

    매개변수에 기본값 지정

    //매개변수의 타입을 지정한 뒤에 "=기본값"을 입력해 기본값을 지정합니다.
    func funcName(parameter1: String, parameter2: String="다다익선"){
        print("\(parameter1)은(는) \(parameter2)!")
    }
    //기본값을 가지는 매개변수는 호출시 생략 가능.
    funcName(parameter1:"공부") //공부은(는) 다다익선!
    funcName(parameter1:"게임", parameter2:"적당히") //게임은(는) 적당히!

     

    전달인자 레이블 사용

    전달인자 레이블은 함수를 호출해서 사용할 떄,

    변수들을 쉽게 구분하기 위한 용도로 사용합니다.

    별다른 명칭없이 넣고 싶다면 _를 사용하면 됩니다.

    func func1(from name1: String, to name2: String){
        //함수 내부에선 매개변수 이름을 사용한다.
        print("\(name1)는 \(name2)에게 인사합니다.")
    }
    
    //함수 호출시는 전달인자 레이블을 사용해야 합니다.
    func1(name1: "나", name2: "당신") //오류
    func1(from: "나", to: "당신") //나는 당신에게 인사합니다.
    
    
    //_사용시 java처럼 별다른 명칭없이 매개변수를 넣을 수 있다.
    func func2(_ name1: String, _ name2: String){
        //함수 내부에선 매개변수 이름을 사용한다.
        print("\(name1)는 \(name2)에게 인사합니다.")
    }
    func2( "나", "당신") //나는 당신에게 인사합니다.

     

     

    가변 매개변수 사용

    전달받을 값의 개수를 알기 어려울때 사용합니다.

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

    func fun1(me name1: String, friends name2: String...) -> String{
        return "아..안녕 \(name2)! 나 \(name1)랑 친구해줄래...?"
    }
    
    print( fun1(me: "아무무", friends: "베이가", "애니", "티모") )  
    //아..안녕 ["베이가", "애니", "티모"]! 나 아무무랑 친구해줄래...?
    
    //가변매개변수는 입력을 하지 않을수도 있습니다.
    print( fun1(me: "아무무") )
    //아..안녕 []! 나 아무무랑 친구해줄래...?

     

    함수타입 사용

    Swift는 다중 프로그래밍 패러다임 언어로써, 함수는 일급객체로 취급됩니다.

    그래서 Swift에서는 함수 자체를 타입으로 사용할 수 있습니다.

    즉, 함수를 데이터 타입 뿐만 아니라 매개변수 및 리턴타입으로도 사용가능합니다.

     

    //타입으로 사용할 함수
    func basicFunc(me name1: String, friend name2: String) ->String{
        return "\(name1)는 \(name2)와 친구야!"
    }
    
    func basic2Func(me name1: String, friend name2: String) ->String{
        return "\(name1)는 \(name2)와 친구가 아니야!"
    }
    
    func anotherFunc(me name: String, age num: Int) ->String{
        return "\(name)는 \(num)살이야!"
    }

     

    함수를 타입으로 사용

    var callFunc: (String, String) ->String = basicFunc(me: friend:)
    print( callFunc("애니", "아무무") )//애니는 아무무와 친구야!
    
    //물론 타입이 다른 함수는 할당이 불가능합니다.
    var callFunc: (String, String) -> Void = anotherFunc(me: age:) //에러
    
    //타입으로 사용하는 함수의 매개변수는 생략이 가능합니다.
    var callFunc2: (String, String) ->String = basicFunc
    print( callFunc2("애니", "아무무") )//애니는 아무무와 친구야!

     

    함수를 매개변수로 사용

    func useFuncParameter(_ type: String, _ addFunc: (String, String)->String,
         _ name1: String, _ name2: String)-> Void{
            print ( "\(type)인 \(addFunc(name1, name2))" );
        }
    useFuncParameter("인싸", basicFunc, "애니", "아무무")
    //인싸인 애니는 아무무와 친구야!

     

    함수를 결과값으로 사용

    (위의 useFuncParameter함수 사용)

    func useFuncResult(_ type: Bool) ->(String, String)->String{
        return type ? basicFunc : basic2Func
    }
    useFuncParameter("인싸", useFuncResult(true), "애니", "아무무")
    //인싸인 애니는 아무무와 친구야!
    useFuncParameter("아싸", useFuncResult(false), "아무무", "애니")
    //아싸인 아무무는 애니와 친구가 아니야!

     


    공부에 도움을 준 사이트

     

    * 전체적인 공부 가이드라인

    yagom.net/

     

    야곰닷넷 - yagom.net

    iOS 개발자들의 놀이터, 배움터, 모임터, 기록보관소 야곰닷넷입니다.

    yagom.net

     

    * 예제 참고

    https://noahlogs.tistory.com/19

     

    [Swift 공부] 함수

     Swift를 제대로 사용하기 위해 함수에 대해서 알아보자. 프로그래밍 언어에서 함수는 특정한 작업을 수행하는 코드들의 모임이다. 어떤 프로그램에서 코드들이 쭉 있다면 그중 일부분을 떼어

    noahlogs.tistory.com

     

    반응형

    'Language > Swift' 카테고리의 다른 글

    Swift 다양한 switch-case 패턴들  (0) 2021.03.09
    Swift의 조건문  (0) 2021.03.09
    Swift 간단한 사칙연산  (0) 2021.03.09
    Swift 함수의 선언과 호출  (0) 2021.03.09
    Swift 기초 개념 및 데이터 타입  (0) 2021.03.08
      'Language/Swift' 카테고리의 다른 글
      • Swift 다양한 switch-case 패턴들
      • Swift의 조건문
      • Swift 간단한 사칙연산
      • Swift 함수의 선언과 호출
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바