Java & Kotlin과 동일한 내용은 안쓰고 새로운 내용만 작성
Function
반환 타입이 없는 void
와 함수의 반환 타입을 명시해야 하는 점은 자바와 동일하다.
Dart 함수에서 사용가능한 기능들
- Optional Parameter
- Named Parameter
- Arrow Function
- typedef 키워드
Optional Parameter
- Optional Parameter라는 개념은 파라미터에
[ ]
로 감싸줌으로써 Builder의 역할을 한다. [ ]
안에?
를 넣어줌으로써 Nullable 처리를 할 수 있는데 아래 예시는 int 예시이다.- 그러므로
[ ]
안에 Default 값을 넣어줌으로써 해결할 수 있다. - 아래 Optional Parameter의 예시를 보자.
void main() {}
addNumbers(10);
addNumbers(20);
}
// Optional Parameter를 사용한 함수
addNumbers(int x, [int y = 20, int z = 30]) {
int sum = x + y + z;
print(sum);
}
Named Parameter
- 이름이 있는 파라미터 (순서가 중요하지 않다.)
- Named Parameter가 있는 함수 호출 시
x: 10
처럼 호출이 가능하다. - 순서가 바뀌어도 동일하게 작동한다.
void main() {
addNumbers(x: 10, y:20, z:30);
addNumbers(z:1, x:2, y:3);
}
addNumbers({required int x, required int y, required int z}) {
int sum = x + y + z;
print(sum);
}
- Named Parameter 함수에 Optional Parameter를 같이 사용하는 법은 간단하다.
- 파라미터에
required
키워드만 빼주면 된다.
addNumbers(
{required int x, required int y, int z}) {
int sum = x + y + z;
print(sum);
}
Position & Named & Optional Parameter 같이 사용
addNumbers(int x, {required int y, int z = 30}) {
int sum = x + y + z;
print(sum);
}
Arrow Function
함수 Body를 안쓰고 바로 =>
키워드로 리턴되는 값의 식을 써줬다.
int addNumbers(int x, {required int y, int z = 30}) => x + y + z;
typedef
- 리턴 타입과 파라미터의 시그니처가 같은 함수
- 동일한 기능의 다양한 함수들의 블루프린트 같은 역할을 한다. (개인적인 생각)
void main() {
// 결과값 : 60
Operation operation = add;
int result = opration(10, 20, 30);
print(result);
// 결과값 : -40
operation = sub;
int result2 = opration(10, 20, 30);
print(result2);
}
// Opration 타입의 typedef 함수 선언
typedef Operation = int Function(int x, int y, int z);
// 리턴 타입과 파라미터의 시그니처가 같은 함수 1
int add(int x, int y, int z) => x + y + z;
// 리턴 타입과 파라미터의 시그니처가 같은 함수 1
int sub(int x, int y, int z) =? x - y - z;
- 위의 방법보다 보통 파라미터에 typedef를 넣어 사용한다.
int calculate(int x, int y, int z, Operation operation) {
return operation(x, y, z);
}
'📘 Frontend > Dart' 카테고리의 다른 글
Dart - Inheritance & Interface & Generic (0) | 2023.05.06 |
---|---|
Dart - Constructor & Getter & Private (0) | 2023.05.06 |
Dart - Condition & Loop (0) | 2023.05.05 |
Dart - Operator & List & Map & Set (0) | 2023.05.05 |
Dart - Type & Null & Immutable (0) | 2023.05.05 |