// 실행하려는 넘버의 문장만 남기고 모두 주석처리 후 실행
// 1. Defining a Function
// sayHello Function, ()안에는 Parameters 위치
String sayHello(String name) {
return "Hello $name nice to meet you!";
}
// Fat arrow syntax 활용 추천
// String sayHello(String name) => "Hello $name nice to meet you!";
void main() {
print(sayHello('gino'));
}
// 2. Named Parameters
String sayHello(
{required String name, // required modifier는 입력 안되면 에러 출력
required int age,
required String country})
{
return "Hello $name, you are $age, and you com from $country";
}
// void는 리턴이 없는 자료형
void main() {
// 순서를 기억하지 않아도 named parmeters 가 지정되어 있어 아래와 같이 입력 가능
print(sayHello(age: 22, name: 'gino', country: 'korea'));
// 비교 : print(sayHello('gino', 22, 'korea')); // 순서를 기역해야함
}
// 3. Optional Positional Parameters []
String sayHello(String name, int age, [String? country = 'cuba']) =>
"Hello $name, I am $age years old and I work at $country";
void main() {
var result = sayHello('nico', 12);
print(result);
}
// 4. QQ Operator
// ?? 와 ??=
// left ?? right : left not null --> left return or right return
String capitalizeName(String name) {
name.toUpperCase() ?? 'ANON';
// name != null ? name.toUpperCase() : 'ANON';
}
/*
위 코드를 풀어서 쓰면
String capitalizeName(String name) {
if (name != null) {
return name.toUpperCase();
}
return 'ANON';
}
*/
void main() {
String? name; // ? : name에 null 값을 허용
name ??= 'gino'; // 값이 null 이면 gino 할당
name = null // 다시 null 값을 할당
name ??= 'another';
print(name); // another가 출력됨
}
// 5. Typedef
// 자료형이 헷갈릴 때 도움이 될만한 alias 생성
/*
List<int> reverseListOfNumbers(List<int> list) {
var reversed = list.reversed; // iterable 자료형으로 변경
return reversed.toList() // 다시 List로 반환해야함
}
*/
// typedef 적용
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversed = list.reversed; // iterable 자료형으로 변경
return reversed.toList() // 다시 List로 반환해야함
}