0️⃣ Defining a Function
void : 반환 타입이 없는 함수
String : 반환 타입이 String인 함수
- 함수 내의 문장이 한문장일 경우 fat arrow syntax 를 활용할 수 있다. (곧바로 return 하는 거와 같은 의미)
void main()
{
print(sayHello('수현'));
print(sayBye('수현'));
}
String sayHello(String name)
{
return "Hello $name, Nice to meet you!";
}
String sayBye(String name) => "Bye $name";
1️⃣ Named Parameters
1) Positional Parameter
- 함수 호출을 통해 매개변수로 값을 전달할 때, 함수에 선언되어진 매개변수 순서대로 값을 입력해야 한다.
- 사용할 때 매개변수의 순서를 기억해야 한다는 번거로움이 있음
2) Named Parameter
- 매개변수를 순서대로 입력하여 값을 전달하는 것이 아닌, <키, 밸류> 형태로 항목을 명시하여 값을 전달할 수 있다.
null이 되지 않도록
default value : 선언된 함수 파라미터에서 값을 미리 정의한다.
String sayHello({String name='수현', int age=23, String country})
{
return "Hello $name, your age is $age, and you come from $country.";
}
void main()
{
print(sayHello(
country: "korea"
));
}
- 출력 ⇒ Hello 수현, your age is 23, and you come from korea.
required : 변수 선언 시 함께 명시하면 null 값을 가질 수 없게 됨
String sayHello({required String name, required int age, required String country})
{
return "Hello $name, your age is $age, and you come from $country.";
}
sayHello 메서드는 반드시 name, age, country 값을 가져야 한다.
2️⃣ Optional Positional Parameters
sayHello 메서드에서 한 매개변수가 null 값일 경우에 디폴트 값을 갖도록 설정할 수 있다.
String sayHello(String name, int age, [String? country = 'germany'])
{
return "Hello $name, you are $age years old from $country.";
}
void main()
{
var result = sayHello('수현', 23);
print(result);
}
- 출력 ⇒ Hello 수현, you are 23 years old from germany.
3️⃣ QQ Operator
?? : 좌항 ?? 우항 => 값이 null이 아니면 좌항을, null이면 우항을 반환한다.
String capitalizeName(String? name)
=> name?.toUpperCase() ?? 'ANON';
??= : 변수가 null이라면 초기화한 값을 할당해달라는 의미
void main()
{
String? name;
name ??= 'nico';
}
4️⃣ Typedef
typedef : 자료형 키워드를 정할 수 있다.
- 좀 더 간단한 타입명을 만들 때 사용한다.
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list)
{
var reversed = list.reversed;
return reversed.toList();
}
void main()
{
print(reverseListOfNumbers([1,2,3]));
}
typedef UserInfo = Map<String, String>;
String sayHi(UserInfo userinfo)
{
return "Hi ${userInfo['name']}";
}
void main()
{
sayHi({"name" : "수현"});
}