Dart에서는 함수를 정의할 때 전달 방식에 따라 3가지 파라미터를 사용할 수 있습니다.
- 포지셔널 파라미터 (positional parameters)
- 네임드 파라미터(named parameters)
- 옵셔널한 파라미터? (optional parameters)
1. 포지셔널 파라미터 (positional parameters)
- 파라미터 순서를 중요하게 받아 처리하는 방식으로 전달 순서가 중요하며, 괄호 안에 나열됩니다.
//두 수의 뺄셈 예제
int substract(int a, int b) {
int sum = a - b;
return sum;
}
void main() {
int result = substract(3, 5);
int result2 = substract(5, 3);
print('결과: $result'); // 출력: 결과: -2
print('결과: $result2'); // 출력: 결과: 2
}
ㄴ int a와 b를 전달받고 있는데, 여기서 파라미터의 순서가 중요합니다.
예를 들어 덧셈의 경우 두 위치가 바뀌더라도 결과는 달라지지 않지만,
만일, 뺄셈을 한다고 하면 위와 같이 출력 결과가 -2, 2로 달라짐을 확인할 수 있습니다.
2. 네임드 파라미터 (named parameters)
- 파라미터 전달 시 이름을 지정해서 전달합니다.
//네임드 파라미터의 두 수의 덧셈 함수 예제
int add({required int frontValue,required int endValue}) {
int sum = frontValue + endValue;
return sum;
}
void main() {
int result = add(frontValue : 3, endValue : 5);
print('결과: $result'); // 출력: 결과: 8
}
ㄴ 포지셔널 파라미터와 비교했을 때 좀 더 복잡해보이나, 이름과 타입을 지정해서 전달하는 파라미터로 순서와 상관이 없습니다.
//네임드 파라미터의 두 수의 뺄셈 함수 예제
int substract({required int frontValue,required int endValue}) {
int sum = frontValue - endValue;
return sum;
}
void main() {
int result = substract(frontValue : 3 , endValue : 5);
int result2 = substract(endValue : 5 , frontValue : 3); //순서를 바꿈
print('결과: $result'); // 출력: 결과: -2
print('결과: $result2'); // 출력: 결과: -2
}
ㄴ 파라미터의 이름을 명확하게 하여 개발자가 명확한 값을 전달할 수 있다는 점에서 장점이 있고,
옵셔널한 파라미터도 설정 가능함에 있어 강점이 있습니다.
3. 옵셔널한 파라미터? (optional parameters)
- 옵션 값이라는 의미로, 전달해도 되고 전달하지 않아도 되는 파라미터를 설정할 수 있습니다.
- 포지셔널 파라미터의 경우 반드시 파라미터 갯수를 모두 충족해야만 프로그램이 돌아가는 반면,
네임드 파라미터의 경우 옵션 값을 설정 할 수 있어 아래 코드와 같이 넣어도 되고 넣지 않아도 되는 함수를 만들 수 있습니다.
//네임드 파라미터의 옵셔널한 예제
int add({required int frontValue,required int endValue, int? expansionValue}) {
int sum = frontValue + endValue + (expansionValue??0);
return sum;
}
void main() {
int result = add(frontValue : 3, endValue : 5);
int result2 = add(frontValue : 3, endValue : 5, expansionValue : 3);
print('결과: $result'); // 출력: 결과: 8
print('결과: $result2'); // 출력: 결과: 11
}
ㄴ 같은 add 함수를 사용한것으로 expansionValue 값을 안넣어도 되고, 넣어도 되는 것을 옵셔널 하다고 표현합니다.
세 가지 함수 파라미터의 방식은 상황에 따라 혼합하여 사용할 수 있습니다.
명확한 코드 구조와 가독성을 위해 named + optional 조합을 자주 사용한다고 합니다.
'춘기IT > 춘기개발' 카테고리의 다른 글
동기 / 비동기 / await / async (1) | 2025.06.17 |
---|---|
Dart문법: 조건문 if/else문 / switch문 (2) | 2025.06.17 |
VS Code Extention Plugin 설치 (0) | 2025.06.16 |
Flutter 개발 환경 설정 (MacOS 플러터 설치) (2) | 2025.06.16 |
Dart 문법: 함수 (0) | 2025.06.04 |