Swift - 클로저(Closures) - 1

2024. 11. 14. 23:08·Language/Swift
728x90
반응형

클로저(Closures)는 무엇일까?

클로저는 실행 가능한 코드 블럭이다.

함수와 달리 이름이 정의되지 않아도 괜찮지만 함수처럼 파라미터 전달 및 리턴 값이 존재할 수 있다.

일급 객체로써 변수, 상수 등에 저장이 가능하고 함수의 파라미터에도 전달이 가능하다.

 

기본 클로저 문법 알아보기

{ (parameters) -> returnType in
	// running code
}

클로저는 기본적으로 중괄호로 감싸져있다.

괄호를 통해 파라미터를 정의하고 "->" 를 이용해 리턴 타입을 명시한다.

"in" 키워드를 이용해 실행 코드와 분리한다.

 

간단한 예시로 사용해보기

let sum: (Int, Int) -> Int = { (x: Int, y: Int) in
    return x + y
}

let result: Int = sum(1, 2)
print(result)

sum이라는 let 상수에 클로저를 할당해주었고 이를 통해 간단한 연산을 해보았다.

 

함수 전달인자(Argument)로 사용해보기

클로저는 주로 함수의 전달인자로 사용되는데

이를 통해 함수 내부에서 원하는 코드블럭을 실행할 수 있다.

 

let add: (Int, Int) -> Int
add = { (x: Int, y: Int) in
    return x + y
}

let sub: (Int, Int) -> Int
sub = { (x: Int, y: Int) in
    return x - y
}

let div: (Int, Int) -> Int
div = { (x: Int, y: Int) in
    return x / y
}

func calculate(x: Int, y: Int, method: (Int, Int) -> Int) -> Int {
    return method(x, y)
}

var result: Int

result = calculate(x: 50, y: 10, method: add)

print(result)

result = calculate(x: 50, y:10, method: (a: Int, b: Int) -> Int in
	return a * b
})

print(result)

첫번째 result처럼 클로저를 상수 혹은 변수에 넣어 전달할 수도 있지만,

두번째 result처럼 함수 호출 시 클로저를 만들어 전달할 수도 있다.

728x90
반응형
저작자표시 비영리 변경금지

'Language > Swift' 카테고리의 다른 글

Swift - 프로퍼티(Properties)  (0) 2024.11.21
Swift - 클로저(Closures) - 2  (0) 2024.11.15
Swift - Class, Struct, Enum 비교하기  (0) 2024.05.13
Swift - 열거형(Enum)  (0) 2024.05.12
Swift - 클래스(Class)  (0) 2023.12.05
'Language/Swift' 카테고리의 다른 글
  • Swift - 프로퍼티(Properties)
  • Swift - 클로저(Closures) - 2
  • Swift - Class, Struct, Enum 비교하기
  • Swift - 열거형(Enum)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237) N
      • Android (84)
      • Language (63) N
        • Java (19)
        • Kotlin (27) N
        • Swift (17)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 해외여행 (0)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    databinding
    스위프트
    코루틴
    jetpack
    CodeLab
    room
    getNumericValue
    MVVM
    티스토리챌린지
    배열
    coroutines
    ViewModel
    프로그래머스
    programmers
    오블완
    ios
    android
    Material
    PCCE
    안드로이드
    Observer
    LiveData
    Kotlin
    SWIFT
    Java
    자바
    aac
    viewModelScope
    코틀린
    daterangepicker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Swift - 클로저(Closures) - 1
상단으로

티스토리툴바