Languages/Dart

[노마드코더] #4 Functions

성중 2023. 1. 9. 19:19

Defining a Function

String sayHello(String name) => "Hello $name";

void main() {
  print(sayHello("yee"));
}
  • 반환 값의 타입을 명시해 함수 선언 (반환 값이 없다면 void)
  • JS와 동일하게 return을 생략하는 arrow function 가능

 

Named Parameters

String sayHello(
        {required String name, int age = 23, required String country}) =>
    "$name / $age / $country";

void main() {
  print(sayHello(name: "yee", age: 23, country: "Korea"));
}
  • 함수 선언부에서 매개변수를 중괄호로 묶어 인수에도 이름을 붙이도록 할 수 있음
  • null safety를 위해 초기값을 지정하거나 인수를 반드시 넣도록 required를 붙여줘야 함

 

Optional Positional Parameters

String sayHello(String name, int age, [String? country = "korea"]) =>
    "$name / $age / $country";

void main() {
  print(sayHello("yee", 23));
}
  • named parameter를 사용하지 않고 순서대로 인수를 입력하는 방식이 positional parameter
  • positional parameter는 null safety를 위해 기본적으로 모두 required 상태
  • 초기값과 함께 대괄호 + 타입 뒤에 ?를 붙여 optional positional parameter로 지정 가능
  • 이 방식보다는 named parameter를 주로 사용

 

QQ Operator

String capitalizeName(String? name) => name?.toUpperCase() ?? "default";

void main() {
  print(capitalizeName(null)); // default

  String? name = "a";
  name ??= "b";
  print(name); // a

  name = null;
  name ??= "b";
  print(name); // b
}
  • ?? 연산자로 왼쪽 값이 null이라면 기본 값 반환
  • ??= 연산자로 변수 값이 null인지 체크해 값 할당

 

Typedef

typedef ListOfInts = List<int>;

typedef UserInfo = Map<String, String>;

ListOfInts reverseListOfInts(ListOfInts list) {
  var reversedList = list.reversed.toList();
  
  return reversedList;
}

String sayHi(UserInfo userInfo) => "Hi ${userInfo["name"]}";

void main() {
  print(reverseListOfInts([1, 2, 3, 4, 5]));
  print(sayHi({"name": "yee"}));
}
  • TS type alias와 비슷하게 타입을 따로 지정해 관리할 수 있음
  • Map 타입 등의 형태를 설명하려면 Class를 활용하는 것이 더 유용

 

본 내용은 노마드코더의 'Dart 시작하기'를 바탕으로 작성되었습니다

'Languages > Dart' 카테고리의 다른 글

[글또] JavaScript 개발자와 Dart 찍먹하기  (0) 2023.02.11
[노마드코더] #5 Classes  (0) 2023.01.12
[노마드코더] #3 Data Types  (0) 2023.01.09
[노마드코더] #2 Variables  (0) 2023.01.08
[노마드코더] #1 Introduction  (0) 2023.01.04