Dart Functions 함수
# Defining a Function
리턴할데이터타입 함수이름(인자데이터타입 인자이름){}
void sayHello(String name) { // void 함수 아무것도 return 하지 않는다.
print ("Hello $name nice to meet you");
}
String sayHello(String name) { // String을 return 하는 함수
return "Hello $name nice to meet you";
}
String sayHello(String name) =>"Hello $name nice to meet you";
// 코드가 한 줄짜리 일 때 fat arrow syntax를 이용
// fat arrow syntax => 는 곧바로 return 한다라는 의미
# Named Parameters
1) Named Parameters 안 쓴 버전 - positional parameter 자리를 알아야함
String sayHello(String name, int age, String country){
return "Hello $name, you are $age, and you come from $country";
}
void main() {
print(sayHello('potato',12,'cuba')); // 인자가 무엇을 뜻하는지 모르기 때문에 좋은 방법이 아님
}
2) Named Parameters 쓴 버전
String sayHello({String name, int age, String country}){ // Named argument를 사용한다고 함수에게 말하는 방법 :중괄호
return "Hello $name, you are $age, and you come from $country";
}
void main() {
print(sayHello( // 순서 상관없이 가능
age:12,
country: 'cuba',
name : '공부중'
));
}
3) 발생하는 문제 : null error 유저가 null 값을 보낼 경우
< null safety >
1. 함수 인자에 null이아닌 기본값 설정해주기 => 인자없이 함수 호출 가능
{String name = 'anon', int age = 99, String country = 'wakanda', }
2. required modifier 사용해서 필수값으로 만들기 - required를 쓰면 값이 반드시 있어야한다.
{required String name, required int age, required String country}
# Optional Positional Parameters - positional parameters는 순서에 맞춰서 인자를 입력, all required 임
인자 중 일부는 required 하지 않게 하기- 대괄호를 씌어주고 ?로 null 값이 될 수 있음을 표시하고 기본값
String sayHello(String name, int age, [String? country= 'cuba'])=> "Hello $name, you are $age, and you come from $country";
}
void main() {
print(sayHello('potato',12));
}
# QQ Operator
1) left ?? right // left가 null이면 right null이 아니면 left
대문자로 변환 함수
1. String capitalizeName(String? name){
if(name!=null){ return name.toUpperCase(); }
return 'ANON';
}
void main(){
capitalizeName('nico');
capitalizeName(null);
}
2. String capitalizeName(String? name) => name != null? name.toUpperCase() : 'ANON';
3. String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';
2) ??=
void main(){
Stirng? name;
name ??= 'nico'; //name이 null이면 'nico' 값을 할당
}
# Typedef - 자료형에 alias를 붙일 수 있게 해줌, 자료형 이름의 별명을 만들 때 사용
리스트 숫자 순서를 반대로 뒤집는 함수
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list){
var reversed = list.reversed;
return reversed.toList(); //리스트를 뒤집으면 리스트와는 조금 다른 iterable이 돼서 toList()를 해줘야함
}