JiSoo's Devlog

[Dart 시작하기] Section 3 본문

App/Dart

[Dart 시작하기] Section 3

지숭숭숭 2024. 1. 24. 12:30
String sayHello(String name){
  return "Hello $name nice to meet you!";
}

void main(){
  print(sayHello('jisoo'));
}

 

fat arrow syntax

String sayHello(String name) => "Hello $name nice to meet you!";

num plus(num a, num b) => a + b;

fat arrow syntax는 곧바로 return하는 거랑 같은 의미

 

Dart의 function은 named parameter을 지원한다

name parameters는 명시적으로 required로 표시되지 않는 한 선택 사항이다

기본값을 제공하지 않거나 named parameters를 필수로 표시하지 않으면 해당 유형은 기본값이 null이 되기 때문에 null을 허용해야 한다

String sayHello({
  String name = 'anaon',
  int age = 99,
  String country = 'wakanda',
}) {
  return "Hello $name, you are $age, and you come from $country";
}

void main() {
  print(sayHello(
    age: 12,
    country: 'cuba',
    name: 'jisoo',
  ));
}
String sayHello({
  required String name, 
  required int age, 
  required String country,
  }) {
  return "Hello $name, you are $age, and you come from $country";
}

void main() {
  print(sayHello(
    age: 12,
    country: 'cuba',
    name: 'jisoo'
  ));
}

named argument를 생성하는 두 가지 방법

1. null safety 때문에 default value를 줘서 만들 수 있다

2. required modifier를 이용해 필수 값으로 만들 수 있다

 

named parameter은 funciton 호출 부분만 읽어도 호출에 뭐가 필요한지 알 수 있기 때문에 이 방법을 더 권장

 

optional positional parameter

대괄호로 감싸주고 널이 될 수도 있다는 것을 표시하고 기본값 주기

String sayHello(String name, int age, [String? country = 'cuba']) =>
    'Hello $name, you are $age years old from $country';

void main() {
  var results = sayHello('jisoo', 2);
  print(results);
}

 

QQ operator

String capitalizeName(String? name) {
  if (name != null) {
    return name.toUpperCase();
  }
  return 'ANON';
}

이렇게 하면 name이 null일 수도 아닐 수도 있다고 얘기하는 것

String capitalizeName(String? name) =>
    name != null ? name.toUpperCase() : 'ANON';

이렇게 fat arrow 방식도 가능

String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';

이렇게 ?? 도 사용할 수 있는데 만약 좌항이 null이면 우항을 return 하고 좌항이 null이 아니면 그대로 좌항을 return

 

QQ equals (QQ assignment operator)

void main() {
  String? name;
  name ??= 'jisoo';
}

만약 name이 null이면 jisoo가 나오도록 할당

변수 안에 값이 null일 때를 체크해서 값을 할당해 줄 수 있다

 

typedef자료형에 alias를 붙일 수 있게 해 준다

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(Map<String, String> userInfo) {
  return "Hi ${userInfo['name']}";
}

void main() {
  sayHi({"name": "jisoo"});
}

구조화된 data의 형태를 지정하고 싶다면 class를 만들어야 한다

 

728x90

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

[Dart 시작하기] Section 4  (1) 2024.01.28
[Dart 시작하기] Section 2  (0) 2024.01.16
[Dart 시작하기] Section 1  (0) 2024.01.16