목차
1. Required Positional Parameters (필수 위치 파라미터)
이 파라미터는 함수 정의에 나열된 순서대로 값을 반드시 전달해야 합니다. 기본값을 줄 수 없고, 생략하면 오류가 발생합니다.
void greet(String name, int age) {
print("Hello, $name! You are $age years old.");
}
void main() {
greet("Alice", 30); // 정상 호출
// greet("Alice"); // 오류: age 파라미터가 없음
}
- name과 age는 둘 다 순서대로 전달해야 하며 생략할 수 없습니다.
- 자주 사용하는 일반적인 함수 정의 방식입니다.
2. Named Parameters (이름 있는 파라미터)
이 파라미터는 중괄호 {} 안에 정의되며, 이름을 붙여서 값을 전달합니다. 순서와 관계없이 사용할 수 있고, 선택적(optional) 또는 필수(required) 로 설정할 수 있습니다.
void greet({String? name, int? age}) {
print("Hello, $name! You are $age years old.");
}
void main() {
greet(name: "Bob", age: 25); // 정상 호출
greet(age: 20, name: "Charlie"); // 순서를 바꿔도 정상
greet(); // 모두 생략 가능 (null 출력됨)
}
필수로 만들고 싶을 경우: required 키워드 사용
void greet({required String name, int age = 0}) {
print("Hello, $name! You are $age years old.");
}
void main() {
greet(name: "David"); // 정상: age는 기본값 사용
greet(name: "Eve", age: 20); // 정상
// greet(age: 20); // 오류: name은 필수지만 누락됨
}
- required 키워드를 붙이면 반드시 전달해야 합니다.
- 선택적인 파라미터는 기본값을 줄 수 있습니다.
3. Optional Positional Parameters (선택적 위치 파라미터)
이 파라미터는 대괄호 [] 안에 정의되며, 값을 전달하지 않아도 됩니다. 전달하지 않으면 기본값을 사용하게 됩니다.
void greet(String name, [int age = 0]) {
print("Hello, $name! You are $age years old.");
}
void main() {
greet("Frank", 35); // 정상 호출
greet("Grace"); // age는 기본값 0으로 처리
}