Swift3(스위프트3)

swift3 스위프트3 함수 function 선언과 호출

알통몬_ 2017. 7. 4. 09:00
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


이번 포스팅에서는 swift3 에서의 함수 선언과 함수 호출에 대해 공부하겠습니다.


함수의 기본 형태

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

  // 구현 코드


     return 반환값

}


예)

- 매개변수와 반환값이 있는 함수

func sumXY( x : Int, y : Int) -> Int {

     var sum : Int = x + y

     return sum

}


- 반환값이 없는 함수 ( 반환값이 없는 경우 반환타입 자리를 생략할 수 있습니다)

func sumXY( x : Int, y : Int) -> Void {

     var sum : Int = x + y

     print("\(x) + \(y) = \(sum)")

}


- 매개변수가 없는 함수

func someFunc() -> Int {

     return Int.max // 정수타입 최댓값

}


- 매개변수와 반환값이 없는 함수

func someFunc() {

    print("정수타입의 최댓값 : \(Int.max)")

}


- 기본 값을 갖는 매개변수를 갖는 함수 

( 기본 값을 갖는 매개변수는 매개변수 목록 중 가장 뒤에 두는 것이 좋습니다)

func greeting(you : String, i : String = "altongmon") -> Void {

     print("Glad to meet you \(you) , I'm \(i)")

}

기본 값을 갖는 매개변수를 갖는 함수를 호출할 때

기본 값이 있는 매개변수는 생략해도 되고 다른 값을 넣어줘도 됩니다.

ex)

greeting(you : "Tom")

     or

greeting(you : "Tom", i : "Jerry")


- 전달 인자 레이블 : 함수 호출 시 매개 변수의 역할을 더 명확히 하거나 함수 사용자의 입장에서 표현하고자 할 경우 사용합니다.

ex)

func greeting(to you : String, from i : String) -> Void {

     print("Glad to meet you \(you) , I'm \(i)")

}

greeting(to : "Tom", from : "Jerry")


전달 인자 레이블을 사용할 경우에는 

'꼭' 함수 내부에서는 매개변수 이름을 사용하고

함수를 호출하는 외부에서는 

전달 인자 레이블을 사용해야 합니다.


- 매개변수의 수가 일정하지 않을 경우 함수 선언과 호출 ( 가변 매개변수)

예를 들어 여러 명의 친구들에게 인사를 하는 함수를 선언한다고 할 때

친구들이 몇 명인지? 정확히 알 수 없다고 하면 아래처럼 선언하고 호출할 수 있습니다.


func greetings(i : String, friends : String... ) -> Void {

       print("Glad to meet you \(friends) , I'm \(i)")

}

greetings(i : "Jerry", friends : "Tom", "Thomas", "Tommy") 

//Glad to meet you ["Tom", "Thomas", "Tommy"], I'm Jerry


- 데이터 타입으로써의 함수

 : 스위프트는 함수형 프로그래밍의 패러다임을 포함하는 다중 패러다임 언어라고 합니다.

 때문에 함수는 일급 객체이므로 변수, 상수 등에 저장이 가능하며 

매개 변수를 통해 전달 또한 가능하다고 하네요~

ex)

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

여기서 반환타입이 Void 라도 생략할 수 없습니다.

greetingFunc("Tom", "Jerry") // Glad to meet you Tom, I'm Jerry


greetingFunc = greeting(you:i:)

greetingFunc = ("Tom", "Jerry") // Glad to meet you Tom, I'm Jerry


타입이 다른 함수는 대입이 불가능합니다.


- 함수의 매개변수 타입에 함수타입이 올 수 있습니다.

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

     function("Tom", "Jerry")

}


runGreeting(function : greeting(you:i: ))

runGreeting(function : greetingFunc)


약간은 복잡?? 어려운 내용이었는데요.

함수의 선언과 호출에 대해 간단하게 알아봤습니다.

더 다양한 방법이 있지만 저도 아직 기초를 공부하는 초보라 ㅎㅎ


다음 포스팅에서는 

제어문과 반복문에 대해 공부하겠습니다~


반응형