Dart - Funtion

2023. 5. 5. 17:50·📘 Frontend/Dart

Java & Kotlin과 동일한 내용은 안쓰고 새로운 내용만 작성


Function

반환 타입이 없는 void와 함수의 반환 타입을 명시해야 하는 점은 자바와 동일하다.


Dart 함수에서 사용가능한 기능들

  • Optional Parameter
  • Named Parameter
  • Arrow Function
  • typedef 키워드

Optional Parameter

  • Optional Parameter라는 개념은 파라미터에 [ ]로 감싸줌으로써 Builder의 역할을 한다.
  • [ ]안에 ?를 넣어줌으로써 Nullable 처리를 할 수 있는데 아래 예시는 int 예시이다.
  • 그러므로 [ ] 안에 Default 값을 넣어줌으로써 해결할 수 있다.
  • 아래 Optional Parameter의 예시를 보자.
void main() {}
  addNumbers(10);
  addNumbers(20);
}

// Optional Parameter를 사용한 함수
addNumbers(int x, [int y = 20, int z = 30]) {
  int sum = x + y + z;
  print(sum);
}

Named Parameter

  • 이름이 있는 파라미터 (순서가 중요하지 않다.)
  • Named Parameter가 있는 함수 호출 시 x: 10 처럼 호출이 가능하다.
  • 순서가 바뀌어도 동일하게 작동한다.
void main() {
  addNumbers(x: 10, y:20, z:30);
  addNumbers(z:1, x:2, y:3);
}

addNumbers({required int x, required int y, required int z}) {
  int sum = x + y + z;
  print(sum);
}
  • Named Parameter 함수에 Optional Parameter를 같이 사용하는 법은 간단하다.
  • 파라미터에 required 키워드만 빼주면 된다.
addNumbers(
  {required int x, required int y, int z}) {
  int sum = x + y + z;
  print(sum);
}

Position & Named & Optional Parameter 같이 사용

addNumbers(int x, {required int y, int z = 30}) {
  int sum = x + y + z;
  print(sum);
}

Arrow Function

함수 Body를 안쓰고 바로 => 키워드로 리턴되는 값의 식을 써줬다.

int addNumbers(int x, {required int y, int z = 30}) => x + y + z;

typedef

  • 리턴 타입과 파라미터의 시그니처가 같은 함수
  • 동일한 기능의 다양한 함수들의 블루프린트 같은 역할을 한다. (개인적인 생각)
void main() {
  // 결과값 : 60
  Operation operation = add;
  int result = opration(10, 20, 30);
  print(result);

  // 결과값 : -40
  operation = sub;
  int result2 = opration(10, 20, 30);
  print(result2);
}

// Opration 타입의 typedef 함수 선언
typedef Operation = int Function(int x, int y, int z);

// 리턴 타입과 파라미터의 시그니처가 같은 함수 1
int add(int x, int y, int z) => x + y + z;

// 리턴 타입과 파라미터의 시그니처가 같은 함수 1
int sub(int x, int y, int z) =? x - y - z;
  • 위의 방법보다 보통 파라미터에 typedef를 넣어 사용한다.
int calculate(int x, int y, int z, Operation operation) {
  return operation(x, y, z);
}
저작자표시 (새창열림)

'📘 Frontend > Dart' 카테고리의 다른 글

Dart - Inheritance & Interface & Generic  (0) 2023.05.06
Dart - Constructor & Getter & Private  (0) 2023.05.06
Dart - Condition & Loop  (0) 2023.05.05
Dart - Operator & List & Map & Set  (0) 2023.05.05
Dart - Type & Null & Immutable  (0) 2023.05.05
'📘 Frontend/Dart' 카테고리의 다른 글
  • Dart - Inheritance & Interface & Generic
  • Dart - Constructor & Getter & Private
  • Dart - Condition & Loop
  • Dart - Operator & List & Map & Set
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Dart - Funtion
    상단으로

    티스토리툴바