1. 함수 타입
func Add( a : Int, _ b : Int )->Int 와 같은 함수의 타입은
(Int, Int) -> Int 이다.
이 함수타입을 인자로 가질수도 있다.
2. 함수 내부에 함수 선언
함수내부에 함수 선언이 가능하며 외부 함수의 변수를 사용 가능하다.
3. 샘플코드
// 함수 고급
func Add( a : Int, _ b : Int )->Int
{
print("Add")
return a+b
}
showType(Add) // (Int,Int) -> Int
var fp1 :(Int,Int)->Int = Add // c의 함수 포인터 개념
fp1(1,2) // Add(1,2)
var fp2 = Add
fp2(2,3)
// 함수 타입을 인자로 가지는 함수
//func foo( f : (Int, Int)->Int, _ a : Int , _ b: Int)
//{
// f(a,b)
//}
//foo(fp1, 1, 2)
typealias FP = (Int,Int)->Int // 미리 지정
func foo( f : FP, _ a : Int , _ b: Int)
{
f(a,b)
}
foo(fp1, 1, 2)
// nested function
//func out_fun()
//{
// func Sub( a : Int, _ b : Int )->Int
// {
// print("Sub")
// return a-b
// }
// Sub(10,2) // 안에서는 가능
//}
//
////Sub(1,2) // error
//out_fun()
func out_fun(num : Int) -> (Int, Int)->Int
{
func Sub( a : Int, _ b : Int )->Int
{
print("Sub")
return a-b + num // 외부함수의 변수 사용 가능, Capture variable
}
Sub(10,2) // 안에서는 가능
return Sub
}
var ret6 = out_fun(5)(10,2) // 함수를 리턴하기 때문에 Sub(10,2)의미
print(ret6) // 10-2+5
'교육 > Swift' 카테고리의 다른 글
[swift] enum (0) | 2016.08.05 |
---|---|
[swift] 클로저 (0) | 2016.08.04 |
[swift] 제어문 (0) | 2016.08.04 |
[swift] 반복문 (0) | 2016.08.04 |
[swift] dictionary (0) | 2016.08.04 |