일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 배열 할당
- jquery 사용하기
- 한글입력 씹힘
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 맥 mysql
- 객체
- 자바스크립트 객체
- 한글입력 잘림
- 황반석 옮김
- 맥 아파치
- 배열 분해 할당
- 닐 스미스 지음
- SwiftUI 기반의 iOS 프로그래밍
- 한글잘림
- 제이쿼리연결
- 블록 스코프
- 자바스크립트
- 기획자랑 사이좋게 지내고 싶다
- max MySQL
- python tkinter 인터페이스
- 한글입력 안됨
- 객체지향
- 한글입력 오류
- 자바스크립트 class
- 제이펍 출판
- max apache
- python GUI 사용하기
- 비주얼스튜디오 코드
- 자바스크립트 객체 만들기
- 생활코딩
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트 배열 할당
- jquery 사용하기
- 한글입력 씹힘
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 맥 mysql
- 객체
- 자바스크립트 객체
- 한글입력 잘림
- 황반석 옮김
- 맥 아파치
- 배열 분해 할당
- 닐 스미스 지음
- SwiftUI 기반의 iOS 프로그래밍
- 한글잘림
- 제이쿼리연결
- 블록 스코프
- 자바스크립트
- 기획자랑 사이좋게 지내고 싶다
- max MySQL
- python tkinter 인터페이스
- 한글입력 안됨
- 객체지향
- 한글입력 오류
- 자바스크립트 class
- 제이펍 출판
- max apache
- python GUI 사용하기
- 비주얼스튜디오 코드
- 자바스크립트 객체 만들기
- 생활코딩
Archives
- Today
- Total
java,javascript,android,php,sql,공부용,메모용
클로저, closures / Xcode SwiftUI Playground 공부 본문
반응형
클로저
1. 참조타입
2. 코드에서 전달 및 사용할 수 있는 독립기능 블록 (클로저는 중괄호({})로 감싸진 실행 가능한 코드 블럭)
3. 일급 객체의 역할을 할 수 있다
(일급객체란 : 전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있고 함수로 반환할 수 있다.)
4. 보통 클로저라고 하면 이름없는 함수 익명함수를 지칭한다
Named Closure, Unnamed Closure (보통 Unnamed 클로저를 말함)
클로저는 다른 프로그래밍 언어의 람다(lamdas)와 비슷한 개념이다
클로저의 최적화로 깔끔하고 명확한 스타일로 코드를 작성할 수 있다.
1. 문맥(context)에서 인자 타입과 반환 타입 추론
2. 단일 표현식 클로저 암시적 변환
3. 축약된 인자 이름
4. 후위 클로저 문법
클로저 표현식
클로저 표현식
{ (매개 변수)-> 리턴 타입 in
실행구문
}
// 파라미터와 리턴타입이 둘다 없는 클로저
let hello = { () -> () in
print("hello")
}
hello()
// 파라미터와 리턴 타입이 있는 클로저
let hello2 = { (name: String) -> String in
return "Hello, \(name)"
}
// 주의 클로저에서 전달인자 레이블을 사용하지 않는다. 파라미터 네임만 사용된다
// 에러 전달인자 레이블을 사용하면 안됨
// hello2(name: "asd")
hello2("young")
// 클로저를 함수에 파라미터로 전달하는 함수
func doSomething(closure: () -> () ) {
closure( )
}
doSomething(closure: { ( ) -> ( ) in
print("hello3-1")
} )
// 클로저가 길어지거나 가독성이 떨어지면
// 후위 클로저 문법을 사용할 수 있다.
// 맨마지막에 전달되는 전달인자에게만 해당된다
doSomething( ) {
print("hello3-2")
}
// 한개의 클로저 일 경우 소괄호 생략가능
doSomething {
print("hello3-3")
}
// 함수의 반환타입으로 클로저를 사용할 수 있다.
// 반환타입에 클로저를 입력해 클로저를 반환할 수 있다
func doSomething2( ) -> ( ) -> ( ) {
return { ( ) -> ( ) in
print("hello444")
}
}
doSomething2()()
// 매개변수에 클로저가 여러개 있는경우
// 매개변수에 클로저가 여러개 있는경우
// 다중 후위 클로저 정의
func doSomething3(success: ( ) -> ( ), fail: ( ) -> ( ) ) {
}
doSomething3 {
<#code#>
} fail: {
<#code#>
}
// 클로저 표현 간소화
// 클로저 표현 간소화
func doSomething4( closure: (Int, Int, Int) -> Int ) {
closure(1,2,3)
}
doSomething4 { (a, b, c) in
return a+b+c
}
// 축약된인자이름
doSomething4(closure: {
return $0+$1+$2
} )
doSomething4(closure: {
$0+$1+$2
})
doSomething4() {
$0+$1+$2
}
doSomething4 {
$0+$1+$2
}
반응형
'모바일 > SwiftUI ios 공부' 카테고리의 다른 글
명언생성기, 버튼 클릭시 박스안에 내용이 랜덤으로 나오게하기/ Xcode SwiftUI 공부 (0) | 2021.11.29 |
---|---|
고차함수, map, filter, reduce / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
try-catch, do-catch, try?, try!오류처리, 예외처리/ Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
옵셔널 체이닝 / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
enum 열거형 / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
Comments