Dart언어의 함수 사용법에 대한 포스팅입니다.
함수 사용법
기본적인 함수의 선언 문법은 다음과 같습니다.
/*
함수리턴타입(생략시 void) 함수이름(매개변수) {
함수내용(표현식)...
}
*/
//예)
void testFunction(testParameter) {
print(testParameter);
}
매개변수 (Parameter)
Dart 함수의 매개변수에는 여러 종류가 있습니다.
Parameter
기본적인 매개변수입니다. 매개변수 가 선언된 순서대로 함수 호출 시 사용합니다.
void main() {
showNumbers(10, 20, 30);
/* Result -->
a: 10
b: 20
c: 30
*/
}
showNumbers(int a, int b, int c) {
print('a: $a');
print('b: $b');
print('c: $c');
}
Optional Parameter
비필수인 매개변수를 의미합니다. 매개변수를 받지만 함수 호출 시 해당 매개변수를 넘기지 않아도 실행 가능합니다.
Optional 매개변수들은 '[ ]'로 묶어서 표현합니다.
void main() {
showNumbers(10);
/* Result -->
a: 10
b: null
c: null
*/
showNumbers(10, 20, 30);
/* Result -->
a: 10
b: 20
c: 30
*/
}
showNumbers(int a, [int? b, int? c]) {
print('a: $a');
print('b: $b');
print('c: $c');
}
💡 Optional 매개변수를 넘기지 않을 경우 자동으로 null 값이 할당된다.
그래서 null이 들어갈 수 있는 int? 타입으로 Optional 매개변수를 선언합니다.
또 Optional 매개변수에는 해당 매개변수가 안 넘어올 것을 대비하여 기본값을 설정할 수 있습니다.
void main() {
showNumbers(10);
/* Result -->
a: 10
b: 20
c: 30
*/
}
showNumbers(int a, [int? b = 20, int? c = 30]) {
print('a: $a');
print('b: $b');
print('c: $c');
}
Named Parameter
매개변수에 이름을 지정해 주는 것으로 이름이 지정된 매개변수는 함수 호출 시 순서와 상관없이 이름에 맞춰 매개변수를 넘겨주고 실행합니다. '{ }'를 사용하여 Named Parameter를 지정할 수 있습니다.
또 Named Parameter 들은 앞에 'required'를 통하여 필수, 비필수(optional) 여부를 지정하여 사용합니다.
void main() {
showNumbers(a:10,b:20);
/* Result -->
a: 10
b: 20
c: 30
*/
showNumbers(a:10,b:20,c:50);
/* Result -->
a: 10
b: 20
c: 50
*/
}
showNumbers({
required int a,
required int b,
int c = 30
}) {
print('a: $a');
print('b: $b');
print('c: $c');
}
리턴 타입
함수 리턴 타입은 함수가 리턴하는 데이터의 타입(자료형)을 의미합니다.
예제를 보면 바로 이해가 되실 겁니다.
void main() {
print(addNumbers(10, 20));
// Result --> 30;
}
int addNumbers(int a, int b) {
return a + b;
}
// int 데이터를 리턴하기때문에 함수이름 앞에 'int'를 붙여줍니다.
💡 함수 이름 앞에 아무 자료형도 쓰지 않을 경우 기본 'void'를 의미합니다.
void는 '공허'라는 뜻으로 아무것도 리턴하지 않습니다.
익명 함수
익명 함수는 이름이 없는 함수를 의미합니다.
함수의 리턴 타입 및 이름을 정의하지 않고 선언하는 것입니다.
void main() {
var noNameFunction = (a, b) {
return(a + b);
};
print('${noNameFunction(5, 10)}');
// Result --> 15
}
익명 함수를 호출하기 위해 변수에 저장하여 사용했습니다.
보통은 매개변수로 넘어가는 임시 함수를 만들 때 사용합니다.
람다식
람다식은 함수에서 표현식 부분 '{ }'을 '=>'로 바꾼 것입니다.
'return' 또한 함수 리턴 타입이 있다면 생략하여도 자동으로 리턴됩니다. (익명 함수라면 표현식의 결과에 따라..)
void main() {
addNumbers(10,20);
// Result --> 30
}
int addNumbers(a,b) => a + b;