6์ผ์ฐจ: 100DaysOfSwift๐
6์ผ์ฐจ
ํ์ ํํธ 1
Swift์์ ํด๋ก์ ๋ ํจ์ ์ด๋ฆ์ด ์๋ ํน๋ณํ ์ ํ์ ํจ์์ ๋๋ค.
์์
let Sau = {
print("I'm Saurabh, iOS developer")
}
//call the Closure
Sau()
2.ํ๋ผ๋ฏธํฐ๋ก ํด๋ก์
์ฐ๋ฆฌ๋ ํด๋ก์ ๋ฅผ ๋ง๋ค๊ธฐ ์ํด func ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ค์์ ํด๋ก์ ๋ฅผ ์ ์ธํ๋ ๊ตฌ๋ฌธ์ ๋๋ค.
{ (parameters) -> returnType in
// statements
}
Here,
๋งค๊ฐ๋ณ์ - ํด๋ก์ ์ ์ ๋ฌ๋ ๋ชจ๋ ๊ฐ
returnType - ํด๋ก์ ๊ฐ ๋ฐํํ๋ ๊ฐ์ ์ ํ์ ์ง์ ํฉ๋๋ค.
in (์ ํ ์ฌํญ) - ๋งค๊ฐ๋ณ์/returnType์ ํด๋ก์ ๋ณธ๋ฌธ์์ ๋ถ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ
์์
let Sau={ (name:String) in
print("MySelf \(name)")
}
//Call the Closure
Sau("Saurabh")
ํด๋ก์ ์ ๋ฐํ ๊ฐ
ํด๋ก์ ๊ฐ ์ด๋ค ๊ฐ์ ๋ฐํํ๋๋ก ํ๋ ค๋ฉด ๋ฐํ ์ ํ์ ์ธ๊ธํ๊ณ return ๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด,
/ closure definition
var findSquare = { (num: Int) -> (Int) in
var square = num * num
return square
}
// closure call
var result = findSquare(3)
print("Square:",result)
๋งค๊ฐ๋ณ์๋ก ํ์
ํด๋ก์ ๋ ๋ฌธ์์ด ๋ฐ ์ ์์ฒ๋ผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํจ์์ ์ ๋ฌํ ์ ์์ต๋๋ค.
let driving = {
print("I'm driving in my car")
}
func travel(action: () -> Void) {
print("I'm getting ready to go.")
action()
print("I arrived!")
}
travel(action: driving)
ํด๋น ํด๋ก์ ๋ฅผ ํจ์์ ์ ๋ฌํ์ฌ ํด๋น ํจ์ ๋ด์์ ์คํํ ์ ์๋๋ก ํ๋ ค๋ฉด ๋งค๊ฐ ๋ณ์ ์ ํ์ () -> Void๋ก ์ง์ ํฉ๋๋ค. ์ฆ, "๋งค๊ฐ ๋ณ์๋ฅผ ํ์ฉํ์ง ์๊ณ Void๋ฅผ ๋ฐํํฉ๋๋ค"๋ฅผ ์๋ฏธํฉ๋๋ค. Swift์ "nothing"์ ๋งํ๋ ๋ฐฉ์์ ๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(6์ผ์ฐจ: 100DaysOfSwift๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/100rabhcsmc/day-6-100daysofswift-161dํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค