[스위프트 기초] 7. 함수 고급

2022. 5. 21. 20:46·Swift

1. 매개변수 기본 값

- 매개변수에 기본적으로 전달될 값을 미리 지정해 둘 수 있음

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

 

func함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 = 매개변수 기본값...) -> 반환타입{

 /* 함수 구현부 */

 return 반환 값

}

 

ex.

func greeting(friend: String, me: String = "dingsi"){

 print("Hello \(friend)! I'm \(me)")

}

 

* 매개변수 기본 값을 가지는 매개변수는 호출 시 생략할 수 있음

greeting(friend: "ling") => Hello ling! I'm dingsi

* 매개변수 기본 값을 가지는 매개변수의 기본 값 외의 다른 값을 출력하고 싶으면 출력할 때 다시 입력해주면 됨

greeting(frined: "lee",me: "za") => Hello lee! I'm za

 

 

2. 전달인자 레이블(Argument Label)

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

- 전달인자 레이블은 변경하여 동일한 이름의 함수를 중복으로 생성 가능

 

func함수이름(전달인자 레이블 매개변수1이름:매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입

 /* 함수 구현부 */

 return

}

 

// 함수 내부에서 전달인자를 사용할 때에는 매개변수 이름을 사용

func greeting(to friend: String, from me: String){

 print("Hello \(friend)! I'm \(me)")

}

// 함수를 호출할 때에는 전달인자 레이블을 사용

greeting(to: "ling",from: "dingsi") => Hello ling! I'm dingsi

 

 

3. 가변 매개변수

- 전달받을 값의 개수를 알기 어려울 때 사용

- 가변 매개변수는 함수당 하나만 가질 수 있음

- 기본 값이 있는 매개변수와 같이 가변 매개변수 역시 매개변수 목록 중 뒤쪽에 위치하는 것이 좋음

 

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

 /* 함수 구현부 */

 return

}

 

func sayHelloToFriends(me: String, friends: String...) -> String{

 return "Hello \(friends)! I'm \(me)!"

}

print(sayHelloToFriends(me: "dingsi", friends: "ling", "lee", "za"))

=> Hello ["ling","lee","za"]! I'm dingsi!

print(sayHelloToFriends(me: "dingsi"))

=> Hello []! I'm dingsi!

 

 

 * 반환 값이 없는 함수, 매개변수 기본 값, 전달인자 레이블, 가변 매개변수 등 모두 섞어서 사용 가능!! * 

 

4. 데이터 타입으로서의 함수

- 스위프트는 함수형 프로그래밍 패러다임을 포함하는 다중 패러다임 언어이므로 스위프트의 함수는 일급 객체

  그러므로 함수를 변수, 상수 등에 할당이 가능하고 매개변수를 통해 전달도 가능

- 함수의 타입 표현 : 반환 타입 생략 불가 

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

 

* 함수타입 사용

var someFunction: (String, String) -> Void = greeting(to:from:)

someFunction("ling", "dingsi") 

=> Hello ling! I'm dingsi

 

someFunction = greeting(friend:me:)

someFunction("ling","dingsi")

=> Hello ling! I'm dingsi

 

* 타입이 다른 함수는 할당할 수 없음 (컴파일 오류 발생)

ex.

someFunction = sayHelloToFriends(me: friends:)

 

 

func runAnother(function: (String, String) -> Void) {

 function("yoon", "hwa")

}

runAnother(function: greeting(friend:me))

=> Hello yoon! I'm hwa

runAnother(function : someFunction)

=> Hello yoon! i'm hwa

 

 

저작자표시 변경금지 (새창열림)

'Swift' 카테고리의 다른 글

[스위프트 기초] 9. 반복문  (0) 2022.05.21
[스위프트 기초] 8. 조건문  (0) 2022.05.21
[스위프트 기초] 6. 함수 기본  (0) 2022.05.21
[스위프트 기초] 5. 컬렉션타입(Array, Dictionary, Set)  (0) 2022.05.21
[스위프트 기초] 4. Any, AnyObject, nil  (0) 2022.05.21
'Swift' 카테고리의 다른 글
  • [스위프트 기초] 9. 반복문
  • [스위프트 기초] 8. 조건문
  • [스위프트 기초] 6. 함수 기본
  • [스위프트 기초] 5. 컬렉션타입(Array, Dictionary, Set)
microsaurs
microsaurs
개발 스터디로그입니다. 공부한 내용을 정리해서 올립니다 ㅇ-ㅇ
  • microsaurs
    microsaurs.devlog
    microsaurs
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • Side Project (0)
      • Algorithm Study (39)
      • JAVA (8)
      • Swift (11)
      • Python (21)
      • CS (5)
      • React (3)
      • 리얼클래스 studylog (27)
      • 정보처리기사[실기] (23)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    영어회화
    프로그래머스
    javaStudy
    study
    Java
    더오피스
    자바알고리즘
    알고리즘
    ios프로그래밍을위한스위프트기초
    파이썬문법
    파이썬기초
    SWIFT
    Python
    Algorithm
    리얼학습일기
    리얼클래스
    타일러영어
    ios프로그래밍
    정보처리기사실기
    ios개발
    프로그래밍언어
    The Office
    나도코딩
    javaalgorithm
    정보처리기사프로그래밍언어
    정처기실기
    파이썬
    영어독학
    스위프트기초
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
microsaurs
[스위프트 기초] 7. 함수 고급
상단으로

티스토리툴바