[Flutter] Dart - 3. Function
2024. 8. 25. 00:41ㆍStudy
1. Defining a Function
void sayHello(String name) {
// void는 아무것도 return하지 않는다는 뜻
print("Hello, $name");
}
// 리턴하는 경우에는 아래와 같이 작성해야함
String sayHello1(String name) {
// void는 아무것도 return하지 않는다는 뜻
return "Hello, $name";
}
// 위와 같이 return하는 동일한 함수
String sayHello2(String name) => "Hello, $name";
void main() {
print(sayHello1('miri')); // Hello, miri
print(sayHello2('miri')); // Hello, miri
}
2. Named Parameters
- 해당 방법을 더 선호
// function의 반환형
// 해당 함수는 String을 반환해야 한다는 뜻
String sayHello(String name, int age, String country) {
return "Hello, $name, you are $age, and you come $country";
}
//named argument
String sayHello1(
// 1. default value 설정
{String name = 'anon',
int age = 0,
String country = 'korea'}) {
return "Hello, $name, you are $age, and you come $country";
}
String sayHello2(
// 2. required
{required String name,
required int age,
required String country}) {
// default value 설정
return "Hello, $name, you are $age, and you come $country";
}
void main() {
print(sayHello('miri', 30, 'jinju'));
print(sayHello1(name: 'miri', age: 30, country: 'jinju'));
print(sayHello2(name: 'miri', age: 30, country: 'jinju'));
}
3. Optional Positional Parameters
- 마지막 인자가 필수가 아니라고 알려주는 표시 + default value 지정
- 잘 사용하지는 않음
String sayHello(String name, int age, [String? country = 'korea']) =>
"Hello, $name, you are $age, and you come $country";
void main() {
var res = sayHello('miri', 30);
print(res);
}
4. QQ Operator
String capitalizeName(String name) => name.toUpperCase();
void main() {
print(capitalizeName('miri')); // MIRI
}
- name에 null 값을 입력하고 싶은 경우
String capitalizeName(String? name) {
if (name != null) {
return name.toUpperCase();
}
return "ANON";
}
// fat arrow 방식을 사용하면 아래와 같이 코드를 줄일 수 있음
String capitalizeName(String? name) => name != null ? name.toUpperCase() : 'ANON';
// 더 간단하게 작성하면?
String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';
// left ?? right → 좌항이 null이면 우항을 리턴함
void main() {
print(capitalizeName(null)); // ANON
}
5. Typedef
- 자료형이 헷갈릴 때 도움이 될 alias을 만드는 방법
// typedef는 여러개 사용 가능
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversed = list.reversed;
return reversed.toList();
}
typedef UserInfo = Map<String, String>;
String sayHi(UserInfo userInfo) {
return "Hi, ${userInfo['name']}";
}
void main() {
print(reverseListOfNumbers([1, 2, 3])); // [3, 2, 1]
print(sayHi({'name': 'miri'})); // Hi, miri
print(sayHi({'dadadadsa': 'miri'})); // Hi, null
}
- 구조화된 data 형태를 지정하고 싶다면 class를 만들어야함
'Study' 카테고리의 다른 글
Flutter에서 위젯(Widget)이란? (0) | 2024.08.29 |
---|---|
Flutter vs React Native, 어떤 걸 선택할까? 🤔 (0) | 2024.08.26 |
[Flutter] Dart - 4. Class (0) | 2024.08.25 |
[Flutter] Dart - 2. Data Type (0) | 2024.08.25 |
[Flutter] Dart - 1. Variables (0) | 2024.08.25 |