[swift] 함수 고급

corncheese·2021년 7월 20일
0

swift

목록 보기
7/9

다양한 매개변수를 갖는 함수

  1. 매개변수가 기본값을 갖는 함수
  • 매개변수에 기본적으로 전달될 값을 미리 지정해 둘 수 있다.
  • 기본값을 갖는 매개변수는 매개변수 목록 중 뒤쪽에 위치하는 것이 좋다.
  • 기본값을 갖는 매개변수는 함수의 호출 시 생략될 수도 있다.
func hello(a: String, b:String = "hi"){
    print("Hello \(a), \(b)")
}

hello(a:"ms") // Hello ms, hi
hello(a:"ms", b:"wow") // Hello ms, wow
  1. 전달인자 레이블(Argument Lable) / to, from 사용
  • 함수를 호출할 때 함수 사용자의 입장에서 매개변수의 역할을 좀 더 명확하게 표현하고자 할 때 사용
  • 전달인자 레이블을 사용한 함수와 동일한 이름의 함수를 중복으로 생성 가능하다.
  • 전달인자 레이블을 사용하면 함수의 명은 hello에서 to, from이 포함된다.
func hello(to friend: String, from me: String){
    print("Hello \(friend), hi \(me)")
}

// 함수를 호출할 때에는 전달인자 레이블을 사용해야 한다.
hello(to: "go", from: "hard")
  1. 가변 매개변수
  • 전달받을 값의 개수를 알기 어려울 때 사용한다.
  • 가변 매개변수는 함수당 하나만 가질 수 있다. 가변매개변수의 위치도 뒤에 위치하는 것이 좋다.
func sayHello(me: String, friend: String...) -> String{
    return "Hello \(friend)! i'm \(me)"
}

// from 전달인자는 무조건 한개 이상
print(sayHello(me: "gogo", friend: "hard", "easy"))
// Hello ["hard", "easy"]! i'm gogo
  1. 데이터 타입으로서의 함수
  • 스위프트는 함수형 프로그래밍 패러다임을 포함하는 다중 패러다임 언어이므로 스위프트의 함수는 일급객체 입니다.
    함수형 프로그래밍..? 이 개념은 따로 학습해야겠다..
  • 그래서 함수를 변수, 상수 등에 할당이 가능하고 매개변수를 통해 전달할 수도 있습니다.
  • 함수의 타입 표현 : 반환 타입을 생략할 수 없다.
var someFunction: (String, String) -> Void = hello(to:from:)
someFunction("go", "hard")

// !! 다른 타입은 할당 할 수 없다.
//someFunction = sayHello(me: "gogo", friend: "hard")

func Another(function: (String, String) -> Void){
    function("hi", "hello")
}

Another(function: hello(a:b:))
// 출력 print("Hello \(friend), hi \(me)")
// Hello hi, hello

Another(function: someFunction)

0개의 댓글