0. Defining a Function
⭐ 함수도 객체이고 타입이 Function임
➡️ 함수를 변수에 할당하거나, 다른 함수에 인수로 전달할 수 있음을 의미하는 것이다.
// 단축 구문(하나의 표현식만 포함하는 함수의 경우)
String sayHello(String name) => "Hello $name nice to meet you.";
// 아래 코드와 같다.
String sayHello(String name) {
return "Hello $name nice to meet you.";
}
1. Named Parameters
💡 Positional Paramater
paratmeter의 위치를 기억하고, parameter의 순서를 그대로 따라서 argument를 입력해야 함
💡 Named Parameter
argument를 입력할 때, 순서를 기억해서 입력하는 것 대신,
함수에 정의된 named parameter와 이에 대응하는 argument를 입력함. (중괄호{ }와 함께)
String sayHello ({
required String name,
required int age,
required String country
}) => "$name, $age, $country";
void main() {
print(sayHello(
name:"Gaeun",
age: 10,
country: "Korea"
));
}
⚠️문제점 : 특정 argument를 입력을 안할 수도 있음 -> 이러한 null safety 이슈 발생 방지하기 위해
-> required modifier 사용
⭐ named required parameter가 가장 바람직하겠다.
2. Optional Positional Parameters
Positional Parameter는 항상 required됨
but.. optional하게 사용하고 싶다면?
-> 대괄호 [ ]와 함께 사용
* named parameter를 더 추천
3. QQ Operator
💡 좌항 ?? 우항
좌항이 null 이면, 우항을 return
좌항이 null 아니면, 좌항을 return
4. Typedef
자료형에 사용자가 원하는 alias를 붙일 수 있게 해준다. (자료형 이름의 별명을 만들 때 사용)
typedef ListOfInts = List;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversedList = list.reversed.toList();
return reversedList;
}
➡️ List 자료형의 alias로 ListOfInts를 붙임.