[Swift] 일급 객체(First-class citizen)

안녕하세요~ 차니에요!

 

오늘은 1급 객체에 대해 알아볼게요.

Swift의 함수가 일급 객체이므로 Swift로 진행하겠습니다!

 

1. 일급 객체란?

 컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(영어: first-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. (위키백과)

 

2. 일급 객체의 조건

일급 객체가 되기 위해선 아래 3가지 조건을 모두 충족하여야 합니다.

  • 변수에 저장할 수 있어야 한다.
  • 객체(함수)의 인자로 전달할 수 있어야 한다.
  • 객체(함수)의 리턴값으로 사용할 수 있어야 한다.

위 세가지 조건을 모두 충족하고 있기에 Swift의 함수는 일급 객체라고 할 수 있습니다.

 

2-1. 변수에 저장할 수 있어야 한다.

func firstClassCitizen(v: String) -> String {
    print("firstClassCitizen")
    return v
}

let fcc = firstClassCitizen
print(fcc("channy"))

firstClassCitizen 함수를 변수 fcc에 저장하여 사용하였습니다.

2-2. 객체의 인자로 전달할 수 있어야 한다.

func firstClassCitizen(v: String) -> String {
    print("firstClassCitizen")
    return v
}

func first(v: String) {
    print("From first : \(v)")
}

let fcc = firstClassCitizen
first(v: fcc("channy"))

2-1에서 생성한 변수를 first 함수의 인자로 사용하였습니다.

2-3. 객체의 리턴값으로 사용할 수 있어야 한다.

func firstClassCitizen(v: String) -> String {
    print("firstClassCitizen")
    return v
}

func first(v: String) -> String {
    return firstClassCitizen(v: v)
}

print(first(v: "I'm channy"))

first 함수의 리턴값으로 firstClassCitizen 함수를 사용하였습니다.

여기까지 일급 객체 그리고 스위프트의 함수가 왜 일급 객체인가에 대해 알아보았습니다.

다음 시간에는 일급 객체의 특징들을 극한으로 활용한 클로저를 주제로 포스팅하도록 하겠습니다~!