Swift) swift 일급객체

2023. 7. 13. 11:29· Swift🐤

오늘은 일급객체에 대해서 얘기해 보겠습니다.

 

일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체

 

입급 객체는 다음과 같은 특징을 갖는데

  • 변수나 데이터 구조에 할당할 수 있어야 합니다
  • 인자로 전달할 수 있어야 합니다
  • 반환값으로 사용할 수 있어야 합니다
  • 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다.

 

swift에서는 함수를 일급 객체로 취급합니다.

 

이 말은 즉 함수를 위에 특징에 적용할 수 있다는 의미입니다.

 

  • 함수를 변수나 데이터 구조에 할당
func sayHelloWorld(){
	print("Hello World!")
}

func sayLoveYou(){
	print("Love you!")
}

let start = sayHelloWorld() //함수를 변수에 할당

var functionArray: [(Void) -> Void] = [] // 함수 타입의 배열(데이터 구조) 선언

functionArray.append(sayHelloWorld)
functionArray.append(sayLoveYou)

start()
/*
	출력
    Hello World!
*/

for function in functionArray{
	functioin()
}
/*
	출력
    Hello World!
    Love you!
*/

 

  • 인자로 전달할 수 있어야 합니다
func calculate(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
    return operation(a, b)
}

func add(a: Int, b: Int) -> Int {
    return a + b
}

func subtract(a: Int, b: Int) -> Int {
    return a - b
}

let result1 = calculate(a: 5, b: 3, operation: add) // 함수를 인자로 전달
print(result1) // 출력: 8

let result2 = calculate(a: 10, b: 4, operation: subtract) // 다른 함수를 인자로 전달
print(result2) // 출력: 6

 

  • 반환값으로 사용할 수 있어야 합니다
func createMultiplier(_ multiplier: Int) -> (Int) -> Int {
    //createMultiplier함수안에 multiplierFunction함수를 정의
    func multiplierFunction(_ value: Int) -> Int {
        return value * multiplier
    }
    
    return multiplierFunction //multiplierFunction함수를 반환
}

let multiplyByTwo = createMultiplier(2) // 함수를 반환
let result1 = multiplyByTwo(5) // 반환된 함수에 인자 5를 입력 후 해당 함수를 변수에 할당
print(result1) // 출력: 10

let multiplyByThree = createMultiplier(3)
let result2 = multiplyByThree(4)
print(result2) // 출력: 12

'Swift🐤' 카테고리의 다른 글

Swift) 열거형(enum)  (1) 2023.10.09
Swift) Nested Function  (0) 2023.09.06
Swift) Property Observers(프로퍼티 옵져버)  (0) 2023.09.04
Swift) collection types(and tuple)  (0) 2023.09.04
Swift) ARC(Automatic Reference Counting)  (0) 2023.09.01
'Swift🐤' 카테고리의 다른 글
  • Swift) Nested Function
  • Swift) Property Observers(프로퍼티 옵져버)
  • Swift) collection types(and tuple)
  • Swift) ARC(Automatic Reference Counting)
성실농장주
성실농장주
매일 조금이라도 꾸준히 성장하고 싶은 개발자
성실농장주
사과농장
성실농장주
전체
오늘
어제
  • 분류 전체보기 (43)
    • iOS 개발공부📱 (4)
    • Swift🐤 (12)
    • SwiftUI🐧 (2)
    • Firebase 🔥 (1)
    • Git 🐈 (2)
    • Linux (1)
    • Trouble Shooting🛠️ (2)
    • 자료구조🏛️ (1)
    • visionOS 개발공부👓 (1)
    • Algorithm💡 (4)
    • RxSwift (5)
    • 오픈소스 (1)
    • ios 개발자 면접 질문🥸 (6)
    • 영어문서 단어집📕 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • processor_management
  • rethrows
  • Debug View Hierarchy
  • SWIFT
  • iOS_process_management
  • control_transfer_statement
  • colorScheme
  • Array
  • Xcode
  • process_control_block
  • Tuple
  • Set
  • responder_chain
  • git
  • CLLocationDegrees
  • RxSwift
  • nested_function
  • process_states
  • EnvironmentValues
  • optional_chaining

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
성실농장주
Swift) swift 일급객체
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.