반복되는 로직, 반복되는 코드를 한 번만 작성하고서 재활용할 수 있습니다.
순서가 중요한 파라미터로 함수 사용 시 파라미터 값을 반드시 적어줘야합니다.
👉 예제
void main() {
// addNumbers(10, 20); // 에러
addNumbers(30, 40, 50);
}
addNumbers(int x, int y, int z) {
int sum = x + y + z;
print('x : $x'); // x : 20
print('y : $y'); // y : 30
print('z : $z'); // z : 40
if(sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
파라미터 값이 있어도 되고 없어도 됩니다.
파라미터 안에 대괄호([])를 넣어주면 사용할 수 있으며
사용 방법에 의해 null 을 허용하지 않을 경우 기본값을 추가해줄 수 있습니다.
Optional Paramenter는 Named이거나 Positional 형태일 수 있으나, 동시에 두 가지 형태는 될 수 없습니다.
👉 예제
void main() {
addNumbers();
addNumbers(20, 30, 40);
}
addNumbers([int x=10, int y = 20, int z = 30]) {
int sum = x + y + z;
print('x : $x'); // x : 10, x : 20
print('y : $y'); // y : 20, y : 30
print('z : $z'); // z : 30, z : 40
if(sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
이름이 있는 파라미터로 순서가 중요하지 않습니다.
함수 호출 시 전달하는 인자를 paramName: value 이름으로 명시하고 그에 해당하는 인자값(value)을 입력하여 전달 하는 방법으로 파라미터 안에 중괄호({})를 넣어주면 사용할 수 있습니다.
Named Parameter 에서 필수 파라미터를 표시하기 위해서는 @required 를 표기 해주어야합니다.
👉 예제
void main() {
addNumbers(y: 20, x: 10);
addNumbers( z: 30, x: 10, y: 40);
}
addNumbers({
required int x,
required int y,
int z = 30,
}) {
int sum = x + y + z;
print('x : $x'); // x : 10, x : 10
print('y : $y'); // y : 20, y : 40
print('z : $z'); // z : 30, z : 30
if(sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
우리말로 '공허, 아무것도 없음'을 의미합니다.
반환값이 없을 경우 void 반환 타입을 사용합니다.
👉 예제
// 반환값이 없을 경우
void main() {
addNumbers(x: 10);
}
void addNumbers({required int x,}) {
print('x : $x');
}
// 반환값이 있을 경우
void main() {
int result = addNumbers(x: 20);
}
int addNumbers({required int x,}) {
print('x : $x');
return x;
}
Lambda 함수(Arrow Function)이 지원되어 조금 더 간결한 코드 작업이 가능합니다.
👉 예제
void main() {
int result = addNumbers(20, y: 10);
print('result : $result');
}
// arrow 함수 변환 전
int addNumbers(int x, {
required int y,
int z = 30,
}) {
int sum = x + y + z;
return sum;
}
// arrow 함수 변환 후
int addNumbers(int x, {
required int y,
int z = 30,
}) => x + y + z;
함수를 미리 시크니처화 해서 여러가지 함수를 유용하게 다룰 수 있는 기능입니다.
👉 예제
void main() {
Operation operation = add;
int result1 = operation(10, 20, 30);
print(result1);
operation = subtract;
int result2 = operation(10, 20, 30);
print(result2);
int result3 = calculate(30, 40, 50, add);
print(result3);
}
typedef Operation = int Function(int x, int y, int z);
// 더하기
int add(int x, int y, int z) => x + y + z;
// 빼기
int subtract(int x, int y, int z) => x - y - z;
// 계산
int calculate(int x, int y, int z, Operation operation) {
return operation(x, y, z);
}