클로저의 형태로 만들다
5
25 câu hỏi đã được viết
되게 간단한 질문인데요, 클로저 파트를 듣다보면 "함수를 클로저 형태로 만들었다.."라는 말씀을 종종 하시는데
이걸 콜백함수를 받는 함수라고 보면 되겠죠...?
함수자체는 콜백을 받는 함수로 만들고, 실행하는 구문쪽에서 클로저의 형태로 실행했다 =>로 이해해도 되려나요?.?
Câu trả lời 1
0
이해하기 쉽게 전달하기 위해 “함수를 클로저 형태로 만들었다”라고 표현했지만, 정확히는 클로저를 매개변수로 받는 함수를 만들었다는 의미입니다.
클로저는 실행할 코드를 하나의 값처럼 표현한 것으로, 변수에 저장하거나 다른 함수에 전달할 수 있습니다.
콜백에 대해서도 간단히 정리해 드리겠습니다.
클로저가 콜백인지 판단할 때는 해당 클로저가 다른 함수에 전달되고, 전달받은 함수에 의해 호출되는지를 보면 됩니다.
// 실행할 코드를 work라는 변수에 클로저로 저장합니다.
let work = {
print("작업 완료")
}
// 클로저를 매개변수로 받는 함수입니다.
func run(completion: () -> Void) {
print("작업 시작")
// run이 전달받은 클로저를 호출합니다.
// 이때 completion으로 전달된 클로저가 콜백 역할을 합니다.
completion()
}
// work를 직접 호출합니다.
// 다른 함수에 전달하지 않았으므로 일반적인 클로저 실행입니다.
// 이 경우 work는 콜백이 아닙니다.
work()
// work를 run에 전달합니다.
// run 내부에서 completion()을 호출하면 실제로 work가 실행됩니다.
// 이 경우 work는 콜백 역할을 합니다.
run(completion: work)결론적으로 클로저와 콜백은 같은 개념이 아닙니다.
클로저를 그냥 직접 호출하면 일반적인 클로저 실행이고, 클로저를 다른 함수에 전달한 뒤 그 함수가 호출하도록 하면 콜백으로 사용한 것입니다.
위 예제에서는 completion()이 전달받은 work를 실행하게 만들었고 이렇게 만들어서 이 호출로 인해 work가 콜백 역할을 하게 됩니다.
Function Types Error
0
8
1
패싱1강에서 강의중에 질문 있습니다.
0
88
2
table view 없음
0
120
2
에러 질문 [UITextField setDataSource:]: unrecognized selector sent to instance 0x107079600"
0
225
2
Main interface 지정 방법
0
188
1
Closure_3 Capture List에 참조 타입 값을 작성할 경우에도 deinit 실행되는 이유가 뭘까요?
0
188
2
TodoCell UIview 생성 후 연결 시 오류
0
436
2
테이블 뷰 데이터 업데이트 관련 질문
0
363
2
TODO List Coredata 질문입니다.
0
349
1
혹시 추가예정인 강의가 대략 언제쯤 나오는지 알수있을까요..?
0
369
1
swift에서 import 헤더를 안해도 되는이유가 궁금합니다.
1
640
1
closure 3 에서 weak로 준 부분이 궁금합니다.
0
337
1
concurrency_1 강의 코드 결과 중 이해가 안가는 부분이 있습니다
0
339
1
self.navigationBar.topItem?.leftBarButtonItem을 해도 button이 보이지 않습니다
0
602
2
func 기능을 쓸때 self. 을 왜쓰는지 이해가 잘안되네요 ㅠㅠ
0
422
1
Closure2 강의에서 예문처럼 똑같이 myfunc2, myfunc3 만들었을때
0
384
1
클론강의 tableViewCell
0
410
1
Location.pin강의에서 self질문이요
1
266
1
넷플릭스 table cell 관련해서 질문이 있습니다.
0
520
1
Capturing Valus
0
304
1
안녕하세요 todolist강의중에서 UI구성중 xib파일 오토레이아웃질문입니다.
0
323
1
환율 강의 테이블뷰에서 데이터 관련 질문있습니다.
0
562
2
환율 네트워크처리1 질문있습니다.
0
277
1
변수 let 위치 질문입니다.
0
377
1

