노마드 코더의 'Dart 시작하기' 강의 #3 FUNCTIONS을 기반으로 정리하였습니다.
positional parameter의 형식에서, 필수적이지 않은 인자를 어떻게 표시할 수 있을까?
String sayHello(
String name,
int age,
String country,
) =>
"Hello my name is $name, age $age, from $country";
void main() {
print(sayHello('Jisoo', 20, 'Korea'));
}
이 코드에서 country는 필수 인자가 아니라면?
optional positional parametr는 아래 3가지를 만족시키면 된다.
[String? country = 'Korea',]
String name,
int age, [
String? country = 'Korea',
]) =>
"Hello my name is $name, age $age, from $country";
void main() {
print(sayHello('Jisoo', 20));
}
//Hello my name is Jisoo, age 20, from Korea
//Korea 데이터를 입력하지 않아도, default value에 따라 출력 됨.
String nameToUpperCase(String name) {
return name.toUpperCase();
}
void main() {
print(nameToUpperCase("jisoo"));
}
//name이 null일 수 있게 만들고 싶다면
String nameToUpperCase(String? name) {
if (name != null) {
return name.toUpperCase();
}
return 'ANON';
}
void main() {
print(nameToUpperCase("jisoo"));
print(nameToUpperCase(null));
}
// JISOO
// ANON
//name이 null일 수 있게 만들고 싶다면
//fat arrow syntax
String nameToUpperCase(String? name) =>
name != null ? name.toUpperCase() : 'ANON';
void main() {
print(nameToUpperCase("jisoo"));
print(nameToUpperCase(null));
}
//QQ를 사용해 left side가 null이라면 right side를 return 함.
String nameToUpperCase(String? name) => name?.toUpperCase() ?? 'ANON';
void main() {
print(nameToUpperCase("jisoo"));
print(nameToUpperCase(null));
}
??(QQ)는 left side ?? right side > left side가 null이라면 right side를 return
void main() {
String? name;
print(name);
name ??= 'Alice';
print(name);
name = null;
name ??= 'Baeck';
print(name);
}
//null
// Alice
// Baeck
name ??= 'Alice' > name이 null일 경우 'Alice'를 대입
자료형에 alias를 붙일 수 있게 함
Map<String,String>을 UserInfo로 alias.
typedef numLists = List<int>;
numLists reverseListOfNumbers(numLists numbers) {
var reversed = numbers.reversed;
return reversed.toList();
}
void main() {
print(reverseListOfNumbers([
1,
2,
3,
4,
5,
6,
]));
}
typedef UserInfo = Map<String, String>;
String sayHi(UserInfo userInfo) =>
"Hi my name is ${userInfo["name"]}, live in ${userInfo["living"]}";
void main() {
print(sayHi({
"name": "jisoo",
"living": "home",
}));
}
//Hi my name is jisoo, live in home
추가적으로, Map 자료형의 key값으로 value를 가져오기 위해서는 ${}같이 중괄호가 필요함.