기본적인 함수의 선언
addNumbers() {
함수 작성
}
예시
void main() {
addNumbers();
}
addNumbers() {
int x = 10;
int y = 20;
int z = 30;
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
paramter에 관하여 ..
함수를 외부에서 입력받아 처리하고 싶을 때 함수 이름 옆() 괄호 안에 있는 것을 파라미터라고 한다.
기본적으로 파라미터로 입력받아 로직을 처리한다.
함수이름 (파라미터1, 파라미터2)
함수의 파라미터에는
positional parameter
optional parameter
named parameter가 있다
positional parameter
void main() {
addNumbers(10, 20, 30); // 이 부분이 파라미터를 입력을 받고 함수를 호출하여 수행하는 부분.
}
addNumbers(int x, int y, int z) { // 이 부분이 파라미터를 설정.
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
파라미터의 순서가 곧 함수 내에서 파라미터로 수행되는 순서이기 때문에 positional parameter 라고 한다.
optional parameter
없어도 되는 파라미터에 대괄호를 넣어준다.
void main() {
addNumbers(10); // y와 z를 파라미터에 입력하지 않고 x인자만 들어갔다.
}
addNumbers(int x, [int? y, int? z]) { // 대괄호[]가 옵셔널 파라미터
int sum = x + y + z; // 연산 시 숫자 + null + null <- 이런 연산은 에러가 난다.
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
1. 없어도 되는 파라미터, 곧 null값이 들어간다
2. null값이 들어가려면 int가 아닌 int?로 선언 되야 한다.
3. sum 연산 시 x + null + null로 되는데 숫자 + null 은 연산 법칙에 존재하지 않는다.
해결방법
기본값을 지정해주자
void main() {
addNumbers(10);
}
addNumbers(int x, [int y = 20, int z = 30]) { //옵셔널 파라미터에 기본값 지정
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
위 처럼 파라미터에 기본값을 주게되면
y와 z를 생략해도 결과는 정상적으로 출력되게 돼있다.
만약 y와 z에 파라미터 입력을 하게 되면
void main() {
addNumbers(10, 50, 60); // y와 z에 파라미터 입력해줌.
}
addNumbers(int x, [int y = 20, int z = 30]) {
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
기본값은 무시되고 입력된 파라미터로 연산이 처리되게 된다.
named parameter
1.순서가 중요하지 않은 파라미터이다.
2. required가 붙는다.
예제로 설정하고 수행해보면
void main() {
addNumbers(x: 10, y: 20, z: 30); // 파라미터 당 :으로 값을 설정
}
addNumbers({ // 중괄호{} 사이에 requried로 파라미터 설정
required int x,
required int y,
required int z
}) {
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
위와 같이 파라미터를 중괄호{} 사이에 required를 앞에 붙여서 선언해주고
함수에 가서 x: value, y: value, z: value에 넣어주면 함수가 실행 된다.
순서가 중요하지 않다는 것은
x: value, y: value, z: value 의 값의 순서가 중요하지 않다는 것
즉,
void main() {
addNumbers(z: 30, y: 20,x: 10); // 파라미터 순서가 바뀜
}
addNumbers({
required int x,
required int y,
required int z
}) {
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if( sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
순서가 바뀌어도
출력은 동일하게 된다.
named parameter에서 optional parmeter를 사용할 수는 없는가?
required를 지우게 되면 optional parameter로 사용하게 되는 것이다.
'Flutter > Dart 문법' 카테고리의 다른 글
[Dart] Class의 getter와 setter (0) | 2023.03.22 |
---|---|
[Dart] 생성자(constructor) (0) | 2023.03.22 |
[Dart] enum의 선언 (0) | 2023.03.21 |
[Dart] while-if-break 문 / for-if-continue 문 (0) | 2023.03.21 |
[Dart] While, Do-While loop (0) | 2023.03.21 |