3-0) Defining a Function
void sayHello(String name){
print("Hello ${name}, nice to meet you!");
}
//위와 같읕 코드
void sayHello(String name) => print("Hello ${name}, nice to meet you!");
void main() {
sayHello("nico");
}
3-1) Named Parameters
- Named Parameters를 사용하지 않았을 때
String sayHello(String name, int age, String country){
return "Hello, ${name}, you are ${age}, and you come from ${country}";
}
void main() {
print(sayHello("nico", 19, "cuba"));
}
- Named Parameters를 사용할 때
- default value를 지정해주어야 함
- default를 잡아주지 않으면 null safety로 인해 에러발생
- 이를 해결하기 위해서는 parameter 앞에 required 예약어를 사용해야함
- 이 경우 반드시 메소드 parameter에 변수를 넣어 주어야 함
- 메소드 호출 시 parameter를 순서에 맞게 작성 할 필요가 없음
- 모든 parameter를 전부 써주어야 함
//default value를 잡아 줄 시 {}중괄호를 넣어 주어야 함
String sayHello({
String name = 'anon',
int age = 99,
String country = 'wakanda',
}) {
return "Hello, ${name}, you are ${age}, and you come from ${country}";
}
//해당 메서드 처럼 default value를 잡아주면 매개변수를 넣지 않아도 메소드 실행됨
void main(){
//호출시에는 {}중괄호 불필요
sayHello();
}
//default value를 잡아 줄 시 {}중괄호를 넣어 주어야 함
String sayHello({
required String name,
required int age,
required String country}){
return "Hello, ${name}, you are ${age}, and you come from ${country}";
}
void main() {
//호출시에는 {}중괄호 불필요
print(sayHello(
name : "nico",
age : 19,
country :"cuba"
));
}
3-2) Optional Positional Parameters
- 메소드의 parameter 중 생략 가능하게 하고 싶을 시 해당 parameter를 [ ]로 감싸면 가능
String sayHello(String name, int age, [String? country = "cuba"]){
return "Hello, ${name}, you are ${age}, and you come from ${country}";
}
void main() {
print(sayHello("nico", 19));
}
3-3) QQ Operator
//좌항이 null이 아니면 그대로 좌항을 reutrn
//좌항이 null이면 우항을 return
left ?? right
ex) 예시
String capitalizeName(String? name) {
if(name != null){
return name.toUpperCase();
}
return 'ANON';
}
//간단하게 변환
String capitalizeName(String? name) => name != null ? name.toUpperCase() : 'ANON';
//더 간단하게 변환
String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';
//좌항이 null이 아니면 그대로 좌항을 사용
//좌항이 null이면 우항을 대입
void main() {
String? name;
name ??= 'nico';
name = null;
name ??= 'another';
print(name);
}
3-4) TypeDef
- alias(별칭, 별명)를 사용할 수 있게 해줌
- 마치 DB에서 AS와 같은 기능
ex) List를 사용한 예시
typedef ListOfInts = List<int>;
List<int> reverseListOfNumbers(List<int> list){
var reversed = list.reversed;
return reversed.toList();
}
//해당 코드는 다음과 동일 함
ListOfInts reverseListOfNumbers(ListOfInts list){
var reversed = list.reversed;
return reversed.toList();
ex) Map을 사용한 예시
typedef UserInfo = Map<String, String>;
String sayHi(UserInfo userInfo){
return "Hi ${userInfo['name']};
}
void main(){
sayHi({"name" : 'nico'});
}
Uploaded by N2T
728x90
반응형
'Language > Dart' 카테고리의 다른 글
4. Classes (0) | 2023.04.05 |
---|---|
2. Data Types (0) | 2023.04.05 |
1. Variables (0) | 2023.04.05 |
0. Why Dart (0) | 2023.04.05 |
댓글