choco5958
지마의 개발일기
choco5958
전체 방문자
오늘
어제
  • 전체보기 (46)
    • 개발 (34)
      • Java (0)
      • JavaScript (7)
      • Php (4)
      • Ios(Swift) (23)
    • 프론트엔드 (7)
      • Html (1)
      • Css (5)
    • 백엔드 (0)
      • Mysql (0)
      • Oracle (0)
      • MongoDB (0)
    • 서버 (2)
      • Linux (2)
    • 일상 (3)
      • 반려동물 (1)
      • 베이킹 (2)
      • 맛집 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • ios#swift#스위프트#아이폰#클래스#애플
  • ios#swift#스위프트#애플#아이폰#고차함수
  • ios#swift#스위프트#프로퍼티#애플#아이폰
  • ios#swift#스위프트#구조체#문법#애플#아이폰
  • ios#swift#스위프트#애플#아이폰#assert#guard
  • ios#swift#스위프트#클로저#애플#아이폰
  • ios#swifth#스위프트#열거형#아이폰#애플
  • ios#swift#스위프트#애플#아이폰
  • 자바스크립트#javascript#js#개발#웹개발
  • swift#ios#스위프트#애플#아이폰#init#초기화구문
  • ios#swift#스위프트#아이폰#애플#함수
  • ios#swift#스위프트#아이폰#애플#옵셔널체이닝
  • ios#swift스위프트#애플#아이폰#클래스#구조체
  • ios#swift#스위프트#조건문#아이폰#애플
  • ios#swift#스위프트#아이폰#애플#상속
  • php#500error
  • php#linux#soap#리눅스
  • ios#swift#스위프트#아이폰#애플#타입캐스팅
  • ios#swift#스위프트#아이폰#애플#프로토콜
  • ios#swift#스위프트#애플#아이폰#try-catch#오류처리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
choco5958

지마의 개발일기

개발/Ios(Swift)

IOS 스위프트(Swift) 문법 - 클로저

2021. 8. 26. 00:15

클로저란?

코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있습니다.

 

일급객체란?

전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환 값이 될 수 도 있습니다.

 

Named Closure, Unnamed Closure

func hello() {
  print("안녕하세요")
}

let hello2 = { print("안녕하세요") }

/////


/*
 { (매개 변수) -> 리턴 타입 in
   실행 구문
 }
 */

let hello = { () -> () in  //() -> ()
    print("hello")  //()
}

hello()  //hello


let hello2 = { (name: String) -> String in  //(String) -> String
    return "Hello, \(name)"  //"Hello, Gunter"
}

hello2("Gunter")  //"Hello, Gunter"

func doSomething(closure: () -> ()) {
    closure()
}

doSomething() {
    print("hello2")  //hello2
}

doSomething() {
    print("hello3")  //hello3
}

doSomething (closure: { () -> () in
    print("hello")  //hello
})

func doSomething2() -> () -> () {
    return { () -> () in  //() -> ()
        print("hello4")  //()
    }
}

doSomething2()()  //hello4

func doSomething2(success: () -> (), fail: () -> ()) {
    
}

doSomething2{
    //code
} fail: {
    //code
}

//코드 단계별로 간단하게 줄이기
func doSomething3(closure: (Int, Int, Int) -> Int) {
    closure(1, 2, 3)
}

doSomething3(closure: { (a, b, c) in
    return a+b+c  //6
})

doSomething3(closure: {
    return $0 + $1 + $2  //6
})

doSomething3(closure: {
    $0 + $1 + $2  //6
})

doSomething3() {
    $0 + $1 + $2  //6
}

doSomething3 {
    $0 + $1 + $2  //6
}

'개발 > Ios(Swift)' 카테고리의 다른 글

IOS 스위프트(Swift) 문법 - 고차함수  (0) 2021.08.26
IOS 스위프트(Swift) 문법 - try-catch  (0) 2021.08.25
IOS 스위프트(Swift) 문법 - 옵셔널 체이닝  (0) 2021.08.25
IOS 스위프트(Swift) 문법 - 열거형  (0) 2021.08.25
IOS 스위프트(Swift) 문법 - 익스텐션  (0) 2021.08.25
    '개발/Ios(Swift)' 카테고리의 다른 글
    • IOS 스위프트(Swift) 문법 - 고차함수
    • IOS 스위프트(Swift) 문법 - try-catch
    • IOS 스위프트(Swift) 문법 - 옵셔널 체이닝
    • IOS 스위프트(Swift) 문법 - 열거형
    choco5958
    choco5958
    안녕하세요. 개발 및 일상 팁 들을 포스팅하는 블로그입니다.

    티스토리툴바