[Flutter / Dart] Dart 기초문법(함수와 람다) (1)

2025. 4. 2. 01:18

1. 함수의 일반적인 특징

함수를 사용하면 한 번만 작성하고 여러 곳에서 재활용을 할 수 있음! 반환할 값이 없을 경우에는 `void` 키워드를 사용함.

int addTwoNumbers(int a, int b) {
  return a + b;
}

void main() {
  print(addTwoNumbers(1, 2));
}

/* 출력값
3
*/

다트 함수에서 매개변수를 지정하는 방법

  • 순서가 고정된 매개변수(포지셔널 파라미터)
    • 입력된 순서대로 매개변수에 값이 지정됨. 예를 들어 `int a`가 `int b`보다 먼저 선언 됐기 때문에 함수를 실행할 때도 1, 2 순서대로 a와 b에 입력이 됨.
  • 이름이 있는 매개변수(네임드 파라미터)
    • 순서와 관계없이 지정하고 싶은 매개변수의 이름을 이용해 값을 입력할 수 있음. 키와 값 형태로 매개변수를 입력하면 되므로 입력 순서는 중요하지 않음.
    • 네임드 파라미터를 지정하려면 중괄호 {}와 required 키워드를 사용해야함.

1.1 포지셔널 파라미터 (Positional Parameters)

  • 말 그대로 순서대로(positionally) 값을 전달함
  • 함수 선언할 때 () 안에 그냥 나열하는 방식
void greet(String name, int age) {
  print("Hello, $name! You are $age years old.");
}

void main() {
  greet("Alice", 25);  // 순서 중요!
}

포지셔널 파라미터의 특징

  • 순서가 중요함 (첫 번째 인자 → name, 두 번째 인자 → age)
  • 실수로 순서 바꾸면 버그 날 수 있음

1.2 네임드 파라미터 (Named Parameters)

  • 함수에 인자를 이름으로 지정해서 전달
  • 선언할 때 {} 중괄호로 감쌈
void greet({required String name, required int age}) {
  print("Hello, $name! You are $age years old.");
}

void main() {
  greet(name: "Alice", age: 25);  // 순서 상관없음!
}

네임드 파라미터의 특징

  • 순서 상관 없이 명시적으로 전달
  • 가독성 좋고, 실수 줄일 수 있음
  • `required` 키워드를 붙여서 반드시 전달해야 하는 인자로 만들 수 있음

 

아까 위 코드의 `addTwoNumbers()`함수를 네임드 파라미터 방식으로 변환해 보겠음.

// 네임드 파라미터
int addTwoNumbers({
  required int a,
  required int b,
}) {
  return a + b;
}

void main() {
  print(addTwoNumbers(a: 1, b: 2));
}

/* 출력값
3
*/

 

여기서 `required` 키워드는 매개변수가 null값이 불가능한 타입이면 기본값을 지정해주거나 필수로 입력해야 한다는 의미임!

기본값을 갖는 포지셔널 파라미터로 지정해보겠음. 대괄호 [ ]를 사용하면 됨.

// 포지셔널 파라미터를 지정
int addTwoNumbers(int a, [int b = 2]) {
  return a + b;
}

void main() {
  print(addTwoNumbers(1));
}

/* 출력값
3
*/

이번에는 네임드 파라미터에 기본값을 적용해 보겠음. `required` 키워드를 생략해주고 등호 다음에 원하는 기본값을 입력해주면 됨.

int addTwoNumbers ({
  required int a,
  int b= 2
}) {
  return a + b;
}

void main() {
  print(addTwoNumbers(a: 1));
}

이번에는 포지셔널 파라미터와 네임드 파라미터를 섞어서 사용해보겠음. 섞어서 사용할 때는 포지셔널 파라미터가 네임드 파라미터보다 반드시 먼저 위치해야함!

 

int addTwoNumbers(
  int a, {
  required int b,
  int c = 4,
}) {
  return a + b + c;
}

void main() {
  print(addTwoNumbers(1, b:3, c: 7));
}

/* 출력값
11
*/

 

 

https://github.com/Leedoseo/Flutter_DartBasic

 

GitHub - Leedoseo/Flutter_DartBasic

Contribute to Leedoseo/Flutter_DartBasic development by creating an account on GitHub.

github.com

 

https://www.notion.so/Dart-Flutter-Study-1cf9fd9f157980a5ab7efad394810871?pvs=4

 

Dart / Flutter Study | Notion

Made with Notion, the all-in-one connected workspace with publishing capabilities.

www.notion.so

 

 

 


출처:코드팩토리의 플러터 프로그래밍 3판

BELATED ARTICLES

more