함수
String sayHello(String name) {
return "Hello, $name nice to meet you!";
}
num plus(num a, num b) => a + b;
void main() {
print(sayHello('Jane'));
print(plus(1, 2));
}
named parameters
String sayHello({ // default value나 required를 써줘야 한다.
String name = 'anon',
int age = 99,
String country = 'uk',
}) {
return "Hello $name, you are $age, and you come from $country";
}
void main() {
print(sayHello(
age: 12,
country: 'korea',
name: 'Jane',
));
}
- positional parameter와 달리, named parameter를 사용하면 파라미터의 위치를 기억하지 않아도 된다.
- 파라미터가 3개 이상일 땐 named parameter를 사용하자
<required>
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(
age: 12,
country: 'korea',
name: 'Jane',
));
}
optional positional parameters
String sayHello(String name, int age, [String? country = 'cuba']) {
return "Hello $name, you are $age, and you come from $country";
}
void main() {
var results = sayHello('nico', 12);
print(results);
}
QQ operator
1. ??
String capitalizeName(String name) => name.toUpperCase();
void main() {
capitalizeName('nico');
capitalizeName(null);
}
→ capitalizeName(null); 에서 에러 발생.
<해결방법>
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';
left ?? right left가 null이면 right을 리턴.
2. ??=
void main() {
String? name;
name ??= 'nico'; // name이 null이라면 nico를 할당해라.
name = null;
name ??= 'another';
print(name); // another
}
typedef
자료형이 헷갈릴 때 alias를 만드는 방법.
List<int> reverseListOfNumbers(List<int> list) {
var reversed = list.reversed;
return reversed.toList();
}
List<int>를 아래와 같이 바꿀 수 있다.
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversed = list.reversed;
return reversed.toList();
}
자료형이 복잡할 때 사용하면 좋음.