60 - Swift 의 폐쇄 (Closure)
패 킷 닫 기 는 자유 (특정 대상 에 연결 되 지 않 음) 변 수 를 포함 할 수 있 는 코드 블록 을 말한다.설명: 실행 할 코드 블록 (자유 변수 가 코드 블록 에 포함 되 어 있 기 때문에 이러한 자유 변수 와 인용 대상 이 방출 되 지 않 았 습 니 다) 과 자유 변수 에 연 결 된 계산 환경 (역할 영역) 을 제공 합 니 다.
2. 폐쇄 적 인 형식
: A
1 : B
2 : C
1、2 : D
: E
:
A : (_ B:D ,_ C:D)-> E
: let sum : (_ index :Int) -> Int
: B/C/E 。 A , 。
3. 폐쇄 적 인 몇 가지 형식
1 > 매개 변수 없 음, 반환 값 없 음
// TODO : 、
let ClosureModel_1 : ()->() = {
print(" 、 ")
}
//
ClosureModel_1()
2 > 매개 변수 가 반환 값 이 없 는 패키지
// TODO : 、
let ClosureModel_2 : (_ index:Int)->() = { index in
print(" :"+"\(index)")
}
//
ClosureModel_2(120)
3 > 여러 매개 변수 가 반환 값 이 없 는 패키지
// TODO : 、
let ClosureModel_3 : (_ index:Int,_ index_1:Int)->() = { (index,index_1) in
print(" :" + "\(index + index_1)")
}
//
ClosureModel_3(110,120)
4 > 매개 변수 없 이 반환 값 이 있 는 패키지
// TODO : 、
let ClosureModel_4 :()->Int = {
return 110
}
//
print(" :" + "\(ClosureModel_4())")
5 > 매개 변수 가 반환 값 이 있 는 패키지
// TODO : ,
let ClosutreModel_5 : (_ index:Int)->Int = { (index:Int) in
let temp = 200
return temp * index
}
//
print(" :" + "\(ClosutreModel_5(110))")
4. 별명 (typealias) 을 사용 하여 패 키 지 를 만 듭 니 다.
1 > 인자 가 없 는 반환 값 이 없 는 패키지
typealias ClosureModel_6 = ()->()
//
let Closure :ClosureModel_6 = {
print(" ")
}
//
Closure()
2 > 매개 변수 가 반환 값 이 있 음
typealias ClosureModel_7 = (_ index:Int)-> Int
//
let Closure1:ClosureModel_7 = { index in
let temp = 100
return temp * index
}
//
print(" :" + "\(Closure1(20))")
5. 뒤 를 따라 가방 을 닫는다.
1 > 가방 을 뒤 따 르 는 것 은 무엇 입 니까?
꼬리 패 킷 은 패 킷 을 함수 로 하 는 마지막 매개 변 수 를 말 하 며 꼬리 패 킷 이 라 고 합 니 다.
2 > 매개 변수 와 반환 값 이 있 는 꼬리 패키지
// TODO : ,
func sum(index:Int,max:(_ value:Int,_ kvalue:Int)->Int) -> Int {
return max(index,index)
}
// MARK :
print(sum(index: 3){ closure,closure_k in
return closure * closure_k
})
3 > 매개 변수 와 반환 값 이 없 는 마지막 패키지
// TODO : ,
func reduction(index:Int,index1:Int,max:()->()) -> Int {
max()
return index - index1
}
//
print(reduction(index: 100, index1: 20){
print(" ")
})
6. 가방 을 닫 고 값 을 얻는다.
// MARK :
func getValue(param value:Int) -> ()->Int {
var toale = 0
func max()->Int {
toale += value
return toale
}
return max
}
// MARk :
print(getValue(param: 10)()) // 10
print(getValue(param: 10)()) // 10
: , ( ), .
//
let paramValue = getValue(param: 10)
print(paramValue()) // 10
print(paramValue()) // 20
7. 자동 폐쇄
1 > 자동 폐쇄 의 특징
var ParamArray = ["2","3","4"]
//
print(ParamArray.count)
//
let removeSwift = {
ParamArray.remove(at: 2)
}
//
print(ParamArray.count)
//
print(removeSwift())
//
print(ParamArray.count)
8. 탈출 폐쇄
1 > 탈출 폐쇄 의 해석
패 킷 을 매개 변수 로 함수 에 전달 할 때 이 패 킷 은 함수 가 돌아 온 후에 야 실 행 됩 니 다. 우 리 는 이 패 킷 이 함수 종 에서 탈출 했다 고 부 릅 니 다.일반적으로 패 킷 이 함수 내 에서 비동기 작업 과 관련 되 지만 함 수 는 곧 실 행 될 것 이 고 돌아 올 것 이 며 패 킷 은 비동기 작업 의 반전 을 위해 도망 가 야 합 니 다.탈출 패 키 지 는 일반적으로 비동기 함수 의 리 셋 에 사 용 됩 니 다. 예 를 들 어 네트워크 가 성공 적 인 리 셋 과 실패 한 리 셋 을 요청 합 니 다.문법: 함수 의 패 킷 행 참조 전에 키워드 '@ escaping' 을 추가 합 니 다.
2 > 패키지 사용
// TODO :
func doSomething(some: @escaping () -> Void){
// ,
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
//1
some()
}
print(" ")
}
doSomething {
print(" ")
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.