안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 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)
약간은 복잡?? 어려운 내용이었는데요.
함수의 선언과 호출에 대해 간단하게 알아봤습니다.
더 다양한 방법이 있지만 저도 아직 기초를 공부하는 초보라 ㅎㅎ
다음 포스팅에서는
제어문과 반복문에 대해 공부하겠습니다~
'Swift3(스위프트3)' 카테고리의 다른 글
swift3 스위프트3 Optional 옵셔널이란? (0) | 2017.07.04 |
---|---|
swift3 스위프트3 조건문(if... else... else if, switch)과 반복문 (for ... in, while, repeat... while) (0) | 2017.07.04 |
Swift3 스위프트3 Any, AnyObject, nil (0) | 2017.07.03 |
swift3 스위프트3 Collections - Dictionary 딕셔너리 (0) | 2017.07.03 |
swift3 스위프트3 Collections - Set 컬렉션 셋 (0) | 2017.07.03 |