func outer(){
print("outer")
func inner(){
print("inner")
}
// 여기
inner()
}
outer
함수 내부
에서 inner
를 실행할 수 있지만outer
함수 외부
에서 inner
를 실행할 수 없음func testFunc(){}
let test = testFunc
이렇게 해도 되지만
이런 경우가 있을 수 있음 (오버로딩하는경우)
func testFunc(name : String){}
func testFunc(_ name : String{}
//이경우에
let test = testFunc // 에러
// 따라서 아예 항상 이렇게 해주도록 한다.
let test2 = testFunc(name:)
*여기에서 주의해야할 점은 이렇게 test2에 저장한 함수와 같이 상수에 저장한 함수를 호출할때는
test2(name : "Johnson")
이렇게 할 수 없다. 함수만을 가져갔지 인자라벨까지 가져가진 않았기 때문이다.
func outer() -> ( () -> () ){
func inner(){}
return inner
}
콜백함수
에서 이런 경우가 많다.func doSomething(_ callback : () -> () ) {
callback()
}
함수
로 넘겨주기func success(){ print("Success") }
doSomething(success)
클로저 unnamed Closure
로 넘겨주기doSomething{
print("success")
}