minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️SQL (0)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • mfc
  • OpenGL회전
  • 그램업그레이드
  • 그램풀스팩업그레이드
  • 구조체매개변수
  • 이것이C++이다책참고
  • hello테마
  • 인공지능개발자
  • kafka구축
  • 19년식그램램장착
  • 리눅스파티션
  • 구조체배열포인터
  • NextJSSwagger
  • 이차원구조체배열포인터
  • AI배워야하나
  • SpringBootSwagger
  • 티스토리폰트배경색없애기
  • 19년식그램SSD장착
  • API문서정리
  • GSLB

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️Flutter

[Dart 3.0] switch (표현식, 패턴매칭, 엄격한 검사, 보호구문)

2025. 1. 25. 07:50

코드팩토리의 플러터 프로그래밍 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

    티스토리툴바