본문 바로가기
iOS📱/Swift

[ Swift ] 일급 객체 ( First-Class Object )

by 텅빈비니 2023. 1. 26.
반응형

안녕하세요 🐶
빈 지식 채우기의 비니🙋🏻‍♂️ 입니다.

오늘은 일급객체 ( First-Class Object ) 대해 알아보는 시간을 가지겠습니다.

 

1. 개요

Swift함수형 프로그래밍을 따르고 있습니다.

고로! Swift라는 언어는 일급 객체 ( First-Class Object) 에 부합하는 언어라고 할 수 있습니다.

 

바로 설명에 들어가도록 하겠습니다~

 

2. 일급 객체

일급 객체? 2급도 있고 3급도 있나? ㅎㅎㅎ 껄껄s~~

앜ㅋㅋㅋㅋㅋㅋㅋㅋ 네 ... 죄송합니다ㅋㅋ

정확히 아래의 조건을 충족한다면 일급 객체라고 할 수 있습니다!

1. 객체가 런타임에도 생성 가능하다.
2. 객체를 인자 값으로 전달할 수 있어야 한다.
3. 객체를 반환 값으로 사용할 수 있어야 한다.
4. 데이터 구조 안에 저장할 수 있어야 한다.

설명만으로는 이해가 안되실 수 있습니다. 바로 예시를 통해 알아보도록 하겠습니다!

 

2-1. 변수에 함수 대입 가능

일급 객체의 첫 번째 특성은 변수와 상수에 함수를 대입할 수 있습니다.

아래 코드를 확인하면 정의된 변수(상수)에 함수 자체를 할당하는 것을 볼 수 있습니다.

func getName(name: String) -> String {
    return name
}

// 상수에 함수가 호출된 결과를 할당
let name = getName(name: "비니")	// (1)

// 상수에 함수 자체를 할당
let nameFun = getName(name:)	// (2)

print(name)
print(nameFun)
  1.  함수의 결과를 변수에 할당합니다.
  2.  함수 자체를 변수에 할당합니다.

일급 객체는 변수와 상수에 함수를 대입할 수 있다!

 

2-2. 함수를  반환 가능

일급 객체의 두 번째 특성은 반환 값으로 상수 및 데이터가 아닌 함수 자체를 반환 할 수 있습니다.

아래 코드를 확인하면 함수 자체를 반환하는 것을 볼 수 있습니다.

// 더하기 함수 선언
func plus( a:Int, b: Int) -> Int {
    return a + b
}

// 더하기 함수를 반환하는 함수 선언
func setPlus(a:Int, b: Int) -> (Int, Int) -> Int {
    return plus	// (1)
}

let onPlus = setPlus(a: 1, b:2)	// (2)

print(onPlus(1, 2))

print(setPlus(a: 1, b: 2)(3, 2))	// (3)
  1.  함수를 반환하는 함수를 생성합니다.
  2.  plus 함수를 변수에 할당합니다.
  3.  메서드 체이닝을 통해서도 간편하게 사용 가능합니다.

일급 객체는 함수 자체를 반환 값으로 사용할 수 있다!

 

2-3. 파라미터로 함수를 전달 가능

일급 객체의 세 번째 특성은 파라미터 값으로 함수를 전달 할 수 있습니다.

아래 코드를 확인하면 파라미터로 함수를 전달하는 것을 볼 수 있습니다.

// 덧셈 함수 선언
func plus( a:Int) -> Int {
    return a + 1
}

// (Int) -> Int 형태에 파라미터를 받는다.
func setPlus(a:Int, fn: (Int) -> Int) -> Int {		// (1)
    return fn(a) // (2)
}

// plus 함수를 전달한다.
print(setPlus(a: 1, fn: plus))
  1.  (Int) -> Int 형태의 파라미터를 받는 함수를 생성한다.
  2.  두 번째 특성인 함수 자체를 반환한다.

일급 객체는 파라미터 값으로 함수를 전달을 할 수 있다!

 

이상으로 일급객체 ( First-Class Object ) 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~

 


참고

반응형