다트에서 함수 매개변수 지정 방법 두가지
1. 포지셔널 파라미터 (입력순서대로 매칭)
2. 네임드 파라미터 (변수지정해서 매칭)
두개같이쓸때는 포지셔널, 네임드 순으로 사용
포지셔널 파라미터
- 함수에 순서대로 지정하는 값
- default값 설정하는 매개변수는 한번에 [ ] 로 묶어 준다. default 는 뒤에 배치한다.
void fun(int a, [int b=3]){}
호출 fun(1); fun(1,2);
void fun(int a , [int b =6, int c=10]){}
호출 fun(1); fun(1, 2); fun(1, 2, 3);
// 에러코드!! default 값 지정은 뒤에 배치해야함
void fun(int a, [int b = 3] , int c){}
네임드 파라미터
- 중괄호{} 로 묶어야함. 매개변수 마지막에 (,) 있음
- 세가지 형태 가능: required / null가능 타입 / 기본값 지정
- required 키워드 붙은 매개변수: null 불가능, 기본값지정가능 (사용자에게 값지정을 강제)
- null 가능타입: 자료형? , 기본값지정가능
- 기본값만 지정: 값 할당
- 호출방법: 매개변수명과 콜론(:) 사용
//아래함수는 호출할때 a 값만 지정하도록 강제됨
// a 외에는 null 가능이거나 기본값이 지정되어있기때문
void fun({
required int a,
required int b=10,
int? c,
int? d = 11,
int e = 12,
}){}
호출 fun(c:null, a: 10); // 순서가 엇갈려도됨
복합사용
- 포지셔널파라미터, 네임드파라미터 순으로 사용
- 주의) 포지셔널 파라미터의 기본값은 네임드 파라미터와 함께 사용 불가능 하다.
void fun(int a , { required int c, }) {}
호출 fun(10,c:5); fun(c:11,10);
//에러코드. 포지셔널 기본값과 네임드 파라미터 함께 사용 불가능
void fun(int a, [int b=10], {required int c})