VesselWheel

클로져의 변형 본문

Xcode Study

클로져의 변형

JasonYang 2023. 10. 19. 13:11

import UIKit

 

// 일반함수

func calculate(n1: Int, n2: Int, test1:(Int, Int)->Int) -> Int{

    return(n1 + n2)

}

 

// 클로저의 변형된 형태

// 실행시 code block(클로저)을 바로 선언하는 형태

var result = calculate(n1:10, n2: 20, test1:{

    (n1: Int, n2: Int) -> Int in

    return n1 + n2

})

print("result : \(result)")

 

// type 추론을 이용해서 return type 을 생략하는 형태

result = calculate(n1: 11, n2: 22, test1: {

    (n1: Int, n2: Int) /* -> Int */ in

    return n1 + n2

})

print("result : \(result)")

 

// parameter 까지 생략하는 형태

result = calculate(n1: 33, n2: 55, test1: {

    /*(n1: Int, n2: Int)  -> Int  in*/

    // $0: 첫 번째 매개변수, $1: 두 번째 매개변수

    return $0 + $1

})

print("result : \(result)")

 

// return 키워드까지 생략하는 형태

result = calculate(n1: 44, n2: 55, test1: {

    /*(n1: Int, n2: Int)  -> Int  in*/

    // $0: 첫 번째 매개변수, $1: 두 번째 매개변수

    // code block 내에서 맨 끝 부분은 return 값으로 인식함

    $0 + $1

})

print("result : \(result)")

 

/*

 후행클로저(Trailing Closure):

   함수를 소괄호로 먼저 닫은 후,

   클로저를 마지막 매개변수로 선언함

 */

result = calculate(n1: 32, n2: 23){

    (n1: Int, n2: Int) -> Int in

    return n1 + n2

}

print("result : \(result)")

 

// 후행클로저에서 return type 생략 가능

result = calculate(n1: 12, n2: 53){

    (n1: Int, n2: Int) /* -> Int */ in

    return n1 + n2

}

print("result : \(result)")

 

// 후행클로저에서 매개변수 생략 가능

result = calculate(n1: 54, n2: 16){

    /*(n1: Int, n2: Int)  -> Int  in */

    return $0 + $1

}

print("result : \(result)")

 

// 후행클로저에서 return 키워드 생략 가능

result = calculate(n1: 72, n2: 58){

    /*(n1: Int, n2: Int)  -> Int  in */

    $0 + $1

}

print("result : \(result)")

'Xcode Study' 카테고리의 다른 글

Tuple  (0) 2023.10.19
구조체 배열  (0) 2023.10.19
클로저(Closure): Code Block  (0) 2023.10.19
Collection : Array, List  (1) 2023.10.19
Xcode 자동 들여쓰기 //Re-Intent(Ctl + i or cmd ][ )  (0) 2023.10.19