코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다.
📌 switch 표현식
switch 문에서 값을 반환받을 수 있다.
=> 로 조건에 맞을 때 값을 반환
_ : default와 같은 의미로 사용
String dayKor = '월요일';
String dayEnglish = switch(dayKor){
'월요일' => 'Mon',
'화요일' => 'Tues',
_=>'Not Found',
};
📌 switch 패턴 매칭
값 매칭, 리스트 매칭, 개수 매칭, 리스트 자료형 매칭, Record 타입 매칭
void(dynamic anything){
switch(anything){
case 'aaa': //값 매칭
break;
case [1,2]: // 정확히 [1,2] 리스트 매칭
break;
case [_,_,_]: // 3개의 값이 들어 있는 리스트를 모두 매칭
break;
case [int a, int b]: // 첫번째와 두번째 값에 int 형인 리스트 매칭
print('a: $a , b: $b'); //매개변수처럼 사용이 가능하다.
break;
case (String a, int b): //첫번째에 String, 두번째에 int 형인 Record 매칭
print('a: $a , b: $b'); //매개변수처럼 사용이 가능하다.
break;
default:
print('no match');
};
}
📌 엄격한 검사
자료형이 입력받을 수 있는 모든 조건을 전부 switch에서 조건으로 확인하고 있는지 체크하는 기술 (enum에서 모든 조건을 체크했는지 확인하기 좋음)
bool? val; //true, false, null 세가지 값을 입력받을 수 있다.
switch(val){ //에러! default를 추가하거나 null을 추가해야 함
case true:
break;
case false:
break;
}
📌 보호구문
case 조건 뒤 when 조건에서 true를 반환할 때만 매칭
(int a, int b) val = (1,-1);
switch(val){
case (1,_) when val.$2 >0:
print('1,_');
break;
default:
print('default');
}
#코드팩토리의플러터프로그래밍2판 #공부용
'◼️Flutter' 카테고리의 다른 글
[Dart 3.0] 엄격한 검사 (0) | 2025.01.25 |
---|---|
[Dart 3.0] 패턴 매칭 (0) | 2025.01.25 |
[Dart 3.0] 구조 분해 (0) | 2025.01.25 |
[Dart 3.0] 레코드 (0) | 2025.01.25 |
[Flutter Dart] Stream (0) | 2025.01.25 |