일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 러닝타이머
- Startign Assignments
- WeatherManager
- xcode로 날씨앱 만들기
- 클로저의 캡슐화
- weak var
- AnyObject
- Protocol
- 러닝기록앱
- UIAlertAction
- RunningTimer
- App Store Connect
- MKMapViewDelegate
- Xcode
- CoreLocation
- font book
- 영문 개인정보처리방침
- 단일 책임원칙
- addannotation
- SwiftUI Boolean 값
- CLLocationManagerDelegate
- swift
- Timer
- Required Reason API
- weatherKit
- 한국어 개인정보처리방침
- MKMapItem
- 서체관리자
- dispatchsource
- UICollectionViewFlowLayout
- Today
- Total
VesselWheel
Closure 본문
import UIKit
/*
Closure
{(parameters) -> ReturnType in
명령문....
}
*/
// 함수를 상수 c 에 할당함
let c = {print("Hello, Swift !!")}
c()
let c2 = { (str1: String) -> String in
return "Hello, \(str1)"
}
let result = c2("더조은")
print(result)
// closure 를 parameter 로 전달하기
// ㄴ argument 로 넣는다는 의미
typealias SimpleStringClosure = (String) -> String
func perform(closure: SimpleStringClosure){
print(closure("아카데미"))
}
perform(closure: c2)
print(c2("아카데미"))
perform(closure: { (str1: String) -> String in
return "Hello, \(str1)"
})
var products = ["macbook pro", "air", "iphone", "apple", "ipad pro", "apple watch", "mac pro"]
var proModels = products.filter({
(name: String) -> Bool in
return name.contains("pro")
})
// parameter type 과 return type 생략하기
products.filter({(name) in
return name.contains("pro")
})
// parameter name 과 in 키워드도 생략함
products.filter({
return $0.contains("pro")
})
print(proModels)
print(proModels.sorted())
print(products.sorted())
print("----------------------------")
products.sort(by: {(lhs: String, rhs: String) -> Bool in
return lhs.description.caseInsensitiveCompare(rhs)
== .orderedAscending
})
proModels.sort(by: {(lhs: String, rhs: String) -> Bool in
return lhs.description.caseInsensitiveCompare(rhs)
== .orderedAscending
})
// parameter type 과 return type 생략하기
proModels.sort(by: {(lhs, rhs) in
return lhs.description.caseInsensitiveCompare(rhs)
== .orderedAscending
})
// parameter name 과 in 키워드도 생략함
proModels.sort(by: {
return $0.description.caseInsensitiveCompare($1)
== .orderedAscending
})
// closure 내부에 return 문만 있으면 return 키워드 생략
proModels.sort(by: {
$0.description.caseInsensitiveCompare($1)
== .orderedAscending
})
// closure 함수가 마지막 파라미터인 경우,
// 함수(sort()) 밖에 작성함
proModels.sort(by:){
$0.description.caseInsensitiveCompare($1)
== .orderedAscending
}
// argument label 생략
proModels.sort(){
$0.description.caseInsensitiveCompare($1)
== .orderedAscending
}
// sort() 안에 argument 가 없으면 () 도 생략
proModels.sort{
$0.description.caseInsensitiveCompare($1)
== .orderedAscending
}
'Xcode Study' 카테고리의 다른 글
tuple (0) | 2023.10.16 |
---|---|
값 캡쳐하기 : capturing values (0) | 2023.10.16 |
내부 함수 : nested functions (0) | 2023.10.16 |
function type - 함수의 자료형(2/2) (0) | 2023.10.16 |
function type - 함수의 자료형(1/2) (1) | 2023.10.14 |