티스토리 뷰
반응형
Dart의 기본적인 함수 선언 방법
기본적인 함수 선언 방식은 다음과 같다.
String toUpperCase(String s){
return s.toUpperCase();
}
이처럼 함수의 형태는
반환형 함수이름(매개변수형 매개변수이름) {
(함수 내용)
return 반환값;
}
과 같은 형태로 이루어져 있다.
함수의 Named Parameter
클래스에서 Named Parameter를 사용하는 것처럼, 함수에서도 같은 방식으로 사용이 가능하다.
다음은 Named Parameter를 사용하는 함수의 예시이다.
// --- Named parameter ---
// Named parameter를 사용하면 함수의 매개변수를 순서에 따라 작성할 필요가 없다.
// 함수를 작성할 때, null-safety를 위해 default value 또는 required를 사용해주어야 한다.
String sayHello({
required String name,
required int age,
String country = "Korea",
}) {
return "Hello $name, you are $age, and you come from $country.";
}
이처럼, sayHello라는 함수는 Named Parameter를 사용하여 매개변수들을 전달받는다.
이 경우에 null-safety를 위해 default value 또는 required를 사용해야한다.
print(sayHello(
name: "hwi",
age: 24,
));
sayHello 함수를 사용하고자 한다면, 위처럼 사용할 수 있다.
Null을 다루는 방법
void main() {
// Named parameter example
print(sayHello(
name: "hwi",
age: 24,
));
// QQ operator example
print(capitalizeName("daehwi"));
String? name;
// name이 null 인 경우 "jason"을 할당한다.
name ??= "jason";
}
// --- Named parameter ---
// Named parameter를 사용하면 함수의 매개변수를 순서에 따라 작성할 필요가 없다.
// 함수를 작성할 때, null-safety를 위해 default value 또는 required를 사용해주어야 한다.
String sayHello({
required String name,
required int age,
String country = "Korea",
}) {
return "Hello $name, you are $age, and you come from $country.";
}
// --- Way to Handle null (QQ operator) ---
String capitalizeName(String? name) {
// Option 1
// if (name != null) {
// return name.toUpperCase();
// }
// return 'ANON';
// Option 2
// return name != null ? name.toUpperCase() : "ANON";
// Option 3: QQ operator
// 좌항이 null인 경우, 우항을 반환한다.
return name?.toUpperCase() ?? "ANON";
}
// --- typedef ---
// 원하는 타입에 alias(별칭)을 붙혀줄 수 있다.
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(List<int> list) {
var reversed = list.reversed;
return reversed.toList();
}
반응형
'Dart & Flutter' 카테고리의 다른 글
[Flutter] Login UI with Firebase Tutorial (0) | 2023.04.22 |
---|---|
[Error] Vertical viewport was given unbounded height / RenderBox was not laid out. (0) | 2023.04.04 |
[Error] Use context before initState() completed (0) | 2023.04.02 |
[Error] Could not find the correct Provider above this Widget (0) | 2023.03.23 |
[Flutter] Stateless Widgets (0) | 2023.03.21 |
댓글