[Flutter / Dart] Dart 기초문법(함수와 람다) (1)
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판
'Dart 언어' 카테고리의 다른 글
[Flutter / Dart] 객체지향 프로그래밍(클래스) (0) | 2025.04.04 |
---|---|
[Flutter / Dart] Dart 기초문법(함수와 람다) (2) (0) | 2025.04.03 |
[Flutter / Dart] Dart 기초문법(제어문) (0) | 2025.03.31 |
[Flutter / Dart] Dart 기초문법(연산자) (0) | 2025.03.31 |
[Flutter / Dart] Dart 기초문법(컬렉션) (0) | 2025.03.29 |