04. 다트 3.0 신규 문법
2024. 4. 9. 23:25
04. 다트 3.0 신규문법
레코드
//포지셔널 파라미터 : 정확한 위치에 파라미터 입력
void main() {
(String, int) minji = ('민지', 20);
(String, int, bool) minji = ('민지', 20, true); // 3개도 가능
print(minji.$1); // 민지 출력
print(minji.$2); // 20 출력
print(minji.$3); // true 출력
}
//네임드 파라미터 : 순서 상관 x
void main() {
({String name, int age}) minji = (name : '민지', age : 20);
}
구조 분해
void main() {
final [minji, haerin] = ['민지', '해린'];
// 리스트에서 스프레드 연산자 사용
final numbers = [1,2,3,4,5,6,7,8];
final [x,y, ..., z] = numbers; // 중간 값들을 버릴 수 있음
// 맵에서 구조 분해
final minjiMap = {'name' : '민지', 'age' : 20};
final {'name' : name, 'age' : age} = minjiMap;
//클래스 구조 분해
final minji = Idol(name : '민지', age : 20);
final Idol(name: name, age: age) = minji;
}
class Idol {
final String name;
final int age;
Idol({
required this.name,
required this.age,
});
}
switch문
void main() {
String dayKor = '월요일';
print(dayEnglish(dayKor)); // 'Monday'
}
String dayEnglish(String dayKor) {
return switch (dayKor) {
'월요일' => 'Monday',
'화요일' => 'Tuesday',
'수요일' => 'Wednesday',
'목요일' => 'Thursday',
'금요일' => 'Friday',
'토요일' => 'Saturday',
'일요일' => 'Sunday',
_ => 'Unknown', // '_' = default
};
}
//패턴 매칭
void switcher(dynamic anything) {
switch (anything) {
case 'aaa':
print('match:aaa');
case [1, 2]:
print('match: [1,2]');
case [_, _, _]: //3개 값이 들어 있는 리스트를 모두 매치
print('match: [_,_,_]');
case [int a, int b]:
print('match: int [$a, int $b]');
case (String a, int b):
print('match: (String: $a, int: $b)');
default:
print('no match');
}
}
void main() {
switcher('aaa');
switcher([1, 2]);
switcher([3, 4, 5]);
switcher([6, 7]);
switcher(('민지', 19));
switcher(8);
}
클래스 제한자
base : 상속만 가능
final : 외부 파일에서 상속, 재정의 불가
interface : 클래스를 외부 파일에서 상속받지 못하고, 재정의만 가능
sealed : 파일 외부에서 상속, 재정의, 인스턴스화 제한
mixin : mixin기능을 클래스에도 적용
'책 > [묘공단] 코드팩토리의 플러터 프로그래밍' 카테고리의 다른 글
06. 기본 위젯 알아보기 (0) | 2024.04.14 |
---|---|
05. 플러터 입문하기 (0) | 2024.04.14 |
03. 다트 비동기 프로그래밍 (0) | 2024.04.09 |
02. 다트 객체지향 프로그래밍 (0) | 2024.04.09 |
01. 다트 입문하기 (변수선언, 컬렉션, typedef) (1) | 2024.04.07 |