728x90
반응형
1급시민
1급시민이란 다음과 같은 조건을 만족하는 것을 말한다. 혹시나 다음의 조건이 이해가 되지않는다고 해도 글을 읽으면 아래에 예시로 설명되어있으니 걱정하지 않아도 된다.
- 1급시민은 변수에 담아 사용할 수 있다.
- 1급 시민은 함수(혹은 메소드)의 매개변수로 전달할 수 있어야 한다.
- 1급시민은 함수(혹은 메소드)의 반환값(return)으로 전달할 수 있다.
1급객체
1급 객체는 위에서 언급한 1급 시민의 조건을 충족하는 객체이다. 예를 들어 javascript에서 객체(Object)는 1급시민의 조건을 만족하는 1급 객체이다.
1급함수
Swift는 1급시민의 조건을 만족하는 1급 함수이다. 따라서
- Swift의 함수는 변수에 할당할 수 있다.
func firstCitizenFunction(parameter: String){
print("Hi, Swift \(parameter) ")
}
//변수 temp에 firstCitizen 함수를 할당해준다.
let temp = firstCitizen
//변수를 이용해 함수를 실행할 수 있다.
temp("student")
- Swift의 함수는 매개변수로 전달할 수 있다.
func simplePrint(parameter: String){
print("output : \(parameter)")
}
func firstCitizen(parameter: String) -> String{
return "\(parameter) is firstCitizen"
}
//simplePrint 함수의 매개변수로 firstCitizen함수를 전달한다.
simplePrint(parameter: firstCitizen(parameter: "Swift"))
출력 : Swift is firstCitizen
- Swift의 함수는, 함수를 반환할 수 있다.
func firstCitizen(parameter: String) -> String {
return "Hello! \(parameter)"
}
func printHello() -> String{
return firstCitizen(param : "Swift")
}
print(printHello())
출력 : Hello! Swift
Closure란?
Closure는 Named Closure(함수를 의미)와 Unamed Closure 두가지로 나누어 생각할 수 있으며 우리가 흔히 Closure라고 부르는 것은 Unamed Closure를 의미한다.
Closure는 앞서 살펴보았던 일급 시민으로서의 역할을 한다. 이 예시는 밑에서 살펴보도록 하겠다.
Clousre 형태
Closure의 형태는 다음과 같으며 중괄호 안에 {} Parameter와 Return Type 그리고 구현부분으로 작성된다.(구현 부분은 in 키워드로 구분하여 작성된다.)
{ (Parameter) -> Return in
(구현)...
}
Clousre는 일급시민으로서의 역할을 한다고 했는데 그 예시를 알아보도록 하겠다. example이라는 상수에 closure를 선언한 것이며 이렇게 example은 parameter를 받아 print해주게 됩니다.
//String을 parameter로 받아 Retrun은 아무것도 해주지 않는다.
let example = { (parameter : String) -> () in
print("output : \(parameter)")
}
exmaple("Hello World!")
728x90
반응형
'IOS' 카테고리의 다른 글
앱스토어 등록 시 ITMS-90683 문제 해결하기 (Missing Purpose String in Info.plist) (0) | 2021.07.15 |
---|---|
[운영체제(OS)] 1. 운영체제란? (Operating Systems Course Overview) (0) | 2021.07.09 |
[IOS 개발] NSInvalidArgumentException Healthkit 오류 (0) | 2021.05.20 |