티스토리 뷰

Swift

[Swift] 일급 객체 First class Citizen

Hani_Levenshtein 2021. 5. 15. 00:21

안녕하세요 Hani입니다.

클로저를 공부하다가 맞이한 일급객체(First class Citizen)..!

일급객체에 대한 이해가 선행되어야할 것 같아서 바로 알아보러 가겠습니당🔥

 

 

일급객체는 다음 세 가지 조건을 만족하는 객체를 말합니다.

 

  • 변수나 상수에 저장 및 할당을 할 수 있어야 합니다.
  • 인자(Argument)로 전달될 수 있어야 합니다.
  • 반환할 수 있어야 합니다.

 

스위프트의 함수는 일급객체의 조건을 만족시킨다고 하는데요..!

일단 만만한 함수를 하나 만들어놓고 스위프트에서의 함수가 일급객체에 속하는지 확인해 보겠습니다.

//function
func summation(_ L: Int, _ R: Int) -> Int {
	return L + R
}

//변수나 상수에 저장 및 할당을 할 수 있어야 합니다.
var firstResult = summation(_:, _:);  //변수에 함수 자체를 할당
var firstResult = summation(3, 2);    //반환 결과를 할당

//인자(Argument)로 전달될 수 있어야 합니다.
var secondResult = summation(5, summation(_:, _:));

//반환할 수 있어야 합니다.
func whatIsResult(_ operator: String) -> (Int, Int) -> Int {
	if operator == "plus"
	    return summation
    else
    	return subtraction
}
var thirdResult = whatIsResult("plus")(3, 2)

함수가 일급객체의 조건을 만족시키는 것을 알게됐습니다.

 

 

공부하다보니 Functional Programming, 고차 함수 등등 공부해야할게 많이 생기네요.

글이 길어질 것 같아서 위 주제는 다음에 이어서 써보겠습니다. ☺️


 References

https://cocoacasts.com/swift-fundamentals-what-are-first-class-functions-in-swift

https://machiner.tistory.com/24

https://www.swiftbysundell.com/articles/first-class-functions-in-swift/

 

 

댓글