🚀 Defining a function
String sayHello (String name){
return "Hello $name nice to meet you";
}
String sayHello (String name) => "Hello $name nice to meet you";
위의 두개의 함수는 똑같음! Java에서의 함수 선언과, js에서의 함수선언의 짬뽕 느낌!
void main(){
print(sayHello('jino'));
}
🚀 Named Parameters
String sayHello({String name, int age, String country}){
return "Hello $name, you are $age, and you came from $country";
}
void main(){
print(sayHello({
name : 'jino',
age : 27,
country : 'Korea',
}))
}
위와 같이 이용할 때 null safety를 보장하기 위해 다음과 같은 2가지 방법이 있다.
// default 값을 정해주는 방식
String sayHello({String name = 'jino', int age = 23, String country = 'Korea'}){
return "Hello $name, you are $age, and you came from $country";
}
// required를 지정해주는 방식 (default값이 아닌 무조건 실제 값이 들어와야 할 때)
String sayHello({
required String name, required int age, required String country
}){
return "Hello $name, you are $age, and you came from $country";
}
🚀 Optional Positional Parameters
String sayHello (String name, int age, [String? country = 'USA']) =>
'Hello $name, you are $age and you are from $country';
void main(){
sayHello('nico', 12);
}
⚡ 대괄호로 감싸주고, country가 있을 수도 있고 없을 수도 있는데, 없다면 default value로 'USA'를 부여해라!
🚀 QQ Operator
String capitalizeName(String name) => {
if (name !== null){
return name.toUpperCase();
}
return 'NONE';
}
// fat arrow version
String capitalizeName(String name) => name !== null ? name.toUpperCase() : 'NONE';
String capitializeName(String name) => name?.toUpperCase() ?? 'NONE';
void main(){
capitalizeName('jino');
capitalizeName();
String? age;
age ??= 27;
// if age is null, give age value 27;
}
🚀 Typedef
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list){
var reversed = list.reversed;
return reversed.toList();
}
void main(){
print(reverseListOfNumbers([1,2,3]));
// [3, 2, 1]
}
===================================================
typedef UserInfo = Map<String, String>;
String sayHi(Map<String, String> userInfo){
return "Hi ${userInfo['name']}"
}
위와 같이 정형화된 구조체를 만들고 싶을 경우 위처럼 typedef을 해주기보다는 class를 만들어 활용하는 것이 더 좋음!!