Dart에서 Function을 정의하고 사용하는 방법에 대해 알아보았다.
Function
String sayHello(String name) {
return "Hello $name nice to meet you!";
}
// 위 함수와 같음
// 함수가 한 줄 짜리일 때 사용
String sayHello(String name) => "Hello $name nice to meet you!";
void main() {
sayHello("JP");
}
Named Parameters
String sayHello(String name, int age, String country) {
return "Hello $name, you are $age, and you come form $country";
}
// Named Parameter를 사용할 때는 매개변수 받을 때 {} 추가
// default 값 설정 가능
// 실제로 값을 받아야 할 때에는 required 키워드를 타입 앞에 적어준다.
String sayHello2({String name = "Default Value", int age = 20, required String country}) {
return "Hello $name, you are $age, and you come form $country";
}
void main() {
// not good
sayHello("JP", 31, "YongIn");
//using named argument - good
sayHello(age:12, country: "YongIn", name: "JP");
}
Optional Positional Parameters => 잘 안씀
// Optional 파라미터를 쓰려면 대괄호 안에 '?'로 인자가 있을 수도 없을 수도 있다는 것을 명시하고, Default Value를 설정해준다.
String sayHello(
String name,
int age,
[String? country = 'Dongtan']
) => 'Hello $name, you are $age years old from $country';
void main() {
sayHello("JP", 31);
}
QQ Operator
// 인자로 null이 들어올 경우 Optional('?')로만 해결할 수 없다.
// if문으로 name이 있을 경우에만 uppercase 해주거나 3항연산자로도 처리할 수 있다.
String capitalizeName(String? name) => name != null ? name.toUpperCase() : 'ANNO';
// 위 함수를 더 짧게 하면 아래와 같다.
// ??를 쓸 경우 좌항이 null이면 우항을 설정한다.
// JS에서 || 연산자랑 비슷한듯?
String captializeName(String? name) => name?.toUpperCase() ?? 'ANNO';
// ??= 연산자도 있다.
String captializeName(String? name) {
name ??= "People"; // name이 null이면 People 값을 설정해준다. ??랑 똑같은듯
}
void main() {
capitalizeName("jp");
capitalizeName(null);
}
TypeDef
// TypeDef란 자료형이 헷갈릴 때 alias를 만드는 것
// reverseListOfNumbers 함수는 List<int> 타입을 리턴받으려고 할 때 정의해둔 ListOfInts를 사용할 수 있다.
// 함수 정의시 리턴 타입 뿐만 아니라 매개변수로도 사용할 수 있는 등 활용이 무궁무진하다.
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(List<int> list) {
var reversed = list.reversed;
return reversed.toList();
}
void main() {
reverseListOfNumbers([1, 2, 3]);
}
'Mobile' 카테고리의 다른 글
[Flutter] Flutter 설치방법 (0) | 2023.10.12 |
---|---|
[Flutter] Flutter의 동작 방식 (0) | 2023.10.10 |
[Dart] Class 및 다양한 Class 속성에 대해 (0) | 2023.10.10 |
[Dart] Dart의 Data Types (0) | 2023.10.09 |
[Dart] Dart의 변수 정의 (3) | 2023.10.09 |