Function(함수) 의 정의
/**
main 함수 바깥에 함수를 정의해도 상관없음
name 이라는 문자열 매개변수를 받고 문자열을 리턴
*/
String sayHello(String name) {
return "Hello $name, nice to meet you";
}
// fat arrow syntax
// 한 줄짜리 함수인 경우 다음과 같이 줄여 쓸 수 있다.
String sayHello(String name) => "Hello $name nice to meet you";
num plus(num a, num b) => a + b;
// void : 아무것도 리턴하지 않음
void main() {
print(sayHello('moz'));
}
Named Parameters
-
Positional parameter (일반적인 매개변수 사용법)
// 각 매개변수가 무엇을 의미하는지 알기가 힘들다. String sayHello(String name, int age, String country) { return "Hello $name nice to meet you, you are $age years old from $country"; } void main() { print(sayHello('moz', 19, 'korea'); }
-
Named Parameter
// default value 를 설정할 수 있음 String sayHello({ String name = 'moz', int age = 12, String country = 'korea' }) { return "Hello $name nice to meet you, you are $age years old from $country"; } // default value 를 지정하고 싶지 않다면? required String sayHello({ required String name, required int age, required String country }) { return "Hello $name nice to meet you, you are $age years old from $country"; } void main() { // 매개변수 순서를 기억할 필요가 없음 print(sayHello( age: 12, country: 'korea', name: 'moz' )); }
Optional Positional Parameters
// Non-optional parameters can't have a default value.
String sayHello(String name, int age, [String? country = 'korea']) {
return "Hello $name nice to meet you, you are $age years old from $country";
}
void main() {
print(sayHello('moz', 12));
}
QQ Operator
// Case 1
String capitalizeName(String? name) {
if (name != null) {
return name.toUpperCase();
}
return 'TIQ';
}
// Case 2
String capitalizeName(String? name) => name != null ? name.toUpperCase() : 'TIQ';
// Case 3 (QQ)
String capitalizeName(String? name) => name?.toUpperCase() ?? 'TIQ';
void main() {
print(capitalizeName('moz')); // MOZ
print(capitalizeName(null)); // TIQ
}
// QQ assigned operator
void main() {
String? name;
name ??= 'moz'; // name 이 null 이면 moz 할당
print(name); // moz
}
Typedef
// 자료형에 alias 를 붙일 수 있다.
typedef ListOfInts = List<int>;
typedef UserInfo = Map<String, String>;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversed = list.reversed; // iterable type
return reversed.toList();
}
String sayHi(UserInfo userInfo) {
return "Hi ${userInfo['name']}";
}
void main() {
print(reverseListOfNumbers([1, 2, 3])); // [3, 2, 1]
print(sayHi({"name": "moz"})); // Hi moz
}