Swift 학습(3): 클로즈업(Closures)
(Closures) , 。
구문
{(parameters) -> return type in
statements
}
: 、 inout , 。
예제
func funA(var value : String,closure: (str : String) -> ()) {
closure(str:value)
}
func closureA(var str : String){
println("closureA : Hi , " + str)
}
func closureB(var str : String){
println("closureB : Hi , " + str)
}
funA("cosmokey",closureA) //closureA : Hi , cosmokey
funA("cosmokey",closureB) //closureB : Hi , cosmokey
funA("cosmokey",{(var str : String) in println("closureC : Hi , " + str)}) //closureC : Hi , cosmokey
문법 사탕
funA("cosmokey",{str in println("closureD : Hi , " + str)}) //closureD : Hi , cosmokey
funA("cosmokey",{println("closureE : Hi , " + $0)}) //closureE : Hi , cosmokey
sort(names, >) //sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )
Trailing 클로징
:Trailing ( ) , 。
funA("cosmokey"){
str in println("closureF : Hi , " + str) //closureF : Hi , cosmokey
}
시스템에서 흔히 볼 수 있는 클립: 맵, Filter,reduce
map
map
func map<U>(transform: (T) -> U) -> U[]
var oldArray = ["Ping","Cosmokey"]
var newArray = oldArray.map(){"Hi , " + $0} //["Hi , Ping","Hi , Cosmokey"]
filter
filter ,
func filter(includeElement: (T) -> Bool) -> [T]
var oldArray = ["Ping","Cosmokey","MM"]
var newArray = oldArray.filter(){count($0) > 2} //["Ping", "Cosmokey"]
reduce
reduce 。
func reduce<U>(initial: U, combine: (U, T) -> U) -> U
var oldArray = ["C","o","s","m","o","k","e","y"]
var newArray = oldArray.reduce("Hi , "){
var newValue = $0 + $1
println(newValue)
return newValue
}
/*
Hi , C
Hi , Co
Hi , Cos
Hi , Cosm
Hi , Cosmo
Hi , Cosmok
Hi , Cosmoke
Hi , Cosmokey
*/
println(newArray) //Hi , Cosmokey
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.