일급 객체의 조건

Swift는 함수형 프로그래밍 지향 패러다임에 따라 1급 객체로서의 조건을 갖춘다.

프로그래밍 언어에서 일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 말한다. 보통 해당 조건들을 만족하면 일급객체라고 할 수 있다.

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

    Swift는 함수형 언어이다.

    함수가 일급 객체의 조건을 만족하는 언어는 함수형 언어이고 함수형 프로그래밍에서는 함수가 일급 객체가 될 수 있다.

일급 함수의 특성

값으로서 저장되고 반환값과 파라미터로 활용가능하다.

변수에 함수 대입 가능

단순하게 함수를 호출하고 호출한 결과를 변수나 상수에 할당하는 것이 아니라 함수 자체를 할당할 수 있다. 만약 오버라이드하여 이름이 같은 함수를 변수에 할당하려면 반드시 타입을 명시해야한다!!
함수의 이름 -> 변수와 상수에 할당 -> 함수의 기능 부여

func plus(num: Int) -> Int {
	return num + 1
}

var function1 = plus
var function2 = plus(2)

함수를 반환 가능

반환 값이 단순 데이터가 아닌 함수 자체가 될 수 있다. 함수의 리턴타입으로는 ‘반환하는 함수 타입’이나 ‘반환하는 함수의 최종 반환 타입’ 모두 가능하다.

func plus(num: Int) -> Int {
    return num + 1
}

func minus(num: Int) -> Int {
    return plus(num: num)
}

minus(num: -1)

인자로 함수를 전달 가능

파라미터로 변수 또는 상수가 아닌 함수 자체를 전달 가능하다. 이러한 형태를 콜백이라고 부르며 클로저 형태로 사용하게 된다.

func plus(num: Int) -> Int {
	return num + 1
}

func minus(num: Int, function: (Int) -> Int) -> Int {
	return function(num)
}

minus(num: 1) { num in
    num - 1
}

태그: ,

카테고리:

업데이트:

댓글남기기