Swift 클로저와 일급 함수

2019. 9. 9. 15:46·iOS/Swift

일급 시민(함수 or 객체)

1. 변수나 데이터 구조(컬렉션) 안에 담을 수 있다.
2. 파라미터로 전달할 수 있다.
3. 리턴값으로 사용할 수 있다.

 

Swift 클로저

let add: (Int, Int) -> Int = { (a: Int, b: Int) in
	return a + b 
}

let res: Int = add(1, 2)

print(res) // 3

swift의 함수는 일급함수가 아니다.

swift의 클로저는 일급함수이다.

 

함수가 일급함수인 경우 : javascript, kotlin, python ..

javascript는 함수를 변수 안에 담고, 리턴값으로 사용할 수 있다.

function calculator(mode){
    var options = {
        '+' : function(left, right){return left + right},
        '-' : function(left, right){return left - right},
        '*' : function(left, right){return left * right},
        '/' : function(left, right){return left / right}
    }
    return options[mode]; 
}

console.log(calculator('*')(2, 3));	 // 6

 

함수가 일급함수가 아닌 경우 : C ..

c는 함수 포인터를 이용하여 전달해야 한다.

#include <stdio.h>

/* 더하기 함수 */
int add(int a, int b) {
    return a + b;
}

/* 함수 포인터를 받을 결과 출력 함수 */
void printResult(int (*fp)(int, int)) {
    printf("%d\n", fp(1, 2));  
}

/* 메인 함수 */
int main()
{
    executer(add);	//3

    return 0;
}

'iOS > Swift' 카테고리의 다른 글

Design Patterns: MVVM, MVVM-C, MVP, Clean Architecture  (2) 2025.01.07
iOS 앱 개발자를 위한 RESTful API 실전 적용과 WebSocket  (1) 2025.01.06
Swift) 값 타입과 참조 타입 그리고 클래스와 구조체 (Value type & Reference type, Class & Struct)  (3) 2021.01.05
Swift 앱의 생명주기와 헷갈리는 UI 관련 개념 정리  (4) 2020.12.14
Swift 중요한 용어와 개념  (2) 2020.12.14
'iOS/Swift' 카테고리의 다른 글
  • iOS 앱 개발자를 위한 RESTful API 실전 적용과 WebSocket
  • Swift) 값 타입과 참조 타입 그리고 클래스와 구조체 (Value type & Reference type, Class & Struct)
  • Swift 앱의 생명주기와 헷갈리는 UI 관련 개념 정리
  • Swift 중요한 용어와 개념
hyunjicraft
hyunjicraft
모든 것을 기록하고 싶었지만 복잡하지 않은 것만 기록하게 된 블로그
    반응형
  • hyunjicraft
    개발망고발
    hyunjicraft
  • 전체
    오늘
    어제
    • 분류 전체보기
      • iOS
        • Swift
        • RxSwift
      • 공부하기
        • React
        • Python
        • 다른 PL
        • Figma
      • 스타트업
      • 글쓰기
        • 회고
  • 블로그 메뉴

    • 태그
  • 인기 글

  • 태그

    알고리즘
    맥에서 블렌더
    setState()
    computer systems
    URLSessionDataTask
    ios system architecture
    스타트업경험
    스타트업개발
    피그마 인스턴스
    중니어
    daummap
    생활코딩
    RxSwift 이미지 다운로드
    blender g
    비동기 프로그래밍
    Python
    기술적도전
    게임런칭
    Communication Patterns
    블렌더 g키
    react
    swift
    함수방식 컴포넌트
    swift codable
    RxSwift image download
    마스터 컴포넌트 연결 해제
    mvvm-c
    블렌더
    RxSwift 비교
    문자열 포맷
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
hyunjicraft
Swift 클로저와 일급 함수
상단으로

티스토리툴바