전체 글

다양한 클래스 제한자가 새로 추가됨.추가된 클래스 제한자는 base, f∈al, ∫erface, sea≤d, miξn임. 모든 클래스 제한자는 class키워드 앞에 명시함.클래스 제한자를 명시한 클래스를 해당 클래스를 사용하는 파일이 아닌 다른 파일에 선언해야 정상적으로 기능이 작동함1. base제한자base제한자는 base클래스의 기능을 강제하는 제한자임. base 클래스를 상속할 때는 다른 파일에서 상속하려면 자식 클래스도 반드시 base, sea≤d, f∈al 중 하나여야 함. 또한, imp≤ments는 불가능함.// base 제한자base class Parent{} // a파일import "1_a.dart"; // b파일Parent ..

Switch문은 다트 언어가 3.0버전으로 업데이트 되면서 네 가지가 추가가됨스위치 표현식(switch expression)패턴 매칭(pattern matching)완전 확인(exhaustiveness checking)가드 절(guard clause)1. 표현식 기능코드는 표현식(expression)과 문(statement)으로 나눌 수 있음. 표현식은 어떠한 값을 만들어 내는 코드임.예를 들어 1+1은 값 2를 만들어내는 표현식임. 이처럼 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함. 문은 기본 단위이자 가장 작은 코드 실행단위로 명령문 즉, 컴퓨터에 내리는 명령이라고 생각하면 됨.표현식 여러 개가 모여 문이 되며, 문에는 선언문, 할당문, 반복문 등이 있음.예를 들어 `var a =..

구조분해는 값을 반환받을 때 단순히 하나의 변수로 받아오지 않음반환된 타입을 그대로 복제해서 타입 내부에 각각의 값을 직접 추출해오는 문법임리스트나 맵, 객체처럼 여러 값을 담고 있는 자료구조를 한번에 풀어 변수에 나눠 담는 문법→ 쉽게 말하면, 📦 "여러 개 들어있는 상자" → 👐 "한번에 여러 변수로 꺼내기"1. List에서의 구조 분해Dart 3.0부터 [a,b]=list문법 지원패턴 매칭과 함께 사용 가능함// 리스트에서의 구조 분해void main() { // 아래 코드와 동일하지만 구조 분해를 사용하면 간결한 코드 작성 가능// final newJeans = ["민지", "해린"];// final minji = newJeans[0];// final haerin =..

1. 레코드레코드는 포지셔널 파라미터 or 네임드 파라미터 중 한 가지 방식을 적용하여 사용할 수 있음두 방식 모두 괄호 안에 쉼표로 구분하여 작성1.1 포지셔널 파라미터를 이용한 레코드포지셔널 파라미터를 이용한 레코드는 포지셔널 파라미터로 표시한 타입 순서를 반드시 지켜야함.// 레코드// 포지셔널 파라미터를 이용한 레코드void main() { // 정확히 위치에 어떤 타입의 값이 입력될지 지정할 수 있음 // (String, int)는 첫 번째 값은 String타입, 두 번쨰 값은 int타입임 (String, int) minji = ("민지", 20); print(minji);}만약, 레코드의 모든 값을 사용하지 않고 특정 순서의 레코드 값을 가져오고 싶다면 $를 사용하면 됨void ..


동기 vs 비동기 프로그래밍동기란?한 작업이 끝나야 다음 작업을 실행함작업들이 순차적으로 실행됨.block∈g방식 -> 이전 작업이 끝날 때까지 기다림.void main() { print('A'); print('B'); print('C');}/* 출력값ABC*/ 비동기란?시간이 오래 걸릴 수 있는 작업을 미뤄두고, 다음 작업을 먼저 실행함대표적인 비동기 작업 : API 호출, 파일 읽기, 타이머 등Future, async, await 키워드를 통해 구현1. FutureFuture클래스는 '미래'라는 단어의 의미대로 미래에 받아올 값을 뜻함.List나 Set처럼 제네릭으로 어떤 미래의 값을 받아올지를 정할 수 있음Future name; // 미래에 받을 String값F..

1. 스태틱지금까지 작성한 변수와 메서드 등 모든 속성은 각 "클래스의 인스턴스"에 귀속됐었음.하지만, stataic키워드를 사용하면 클래스 자체에 귀속됨.class Counter { // 1. static키워드를 사용해서 static 변수 선언 static int i = 0; // 2. static 키워드를 사용해서 static 변수 선언 Counter() { i++; print(i++); }}void main() { Counter count1 = Counter(); Counter count2 = Counter(); Counter count3 = Counter();}/* 출력값135*/변수 i를 static으로 지정했음 -> 스태틱 변수 (또는 정적 변수)라고 부..

1. 추상추상은 상속이나 인터페이스로 사용하는 데 필요한 속성만 정의하고 인스턴스화 할 수 없도록 하는 기능임!// 부모 클래스class Idol { final String name; final int membersCount; Idol(this.name, this.membersCount); void sayName() { print("저는 {this.name}입니다."); } void sayMembersCount() { print("{this.name}멤버는 ${this.membersCount}명입니다."); }}// implements 키워드를 사용하면 원하는 클래스를 인터페이스로 사용 가능!class GirlGroup implements Idol { final S..

그럼 이전 글에 이어서 인터페이스와 믹스인에 대해서 공부해보겠음! 1. 인터페이스상속은 공유되는 기능을 이어받는 개념이지만, 인터페이스는 공통으로 필요한 기능을 정의만 해두는 역할을 함!상속에서 사용한 Idol클래스를 인터페이스로 사용해보겠음. Dart에는 인터페이스를 지정하는 키워드가 따로 없음!상속은 단 하나의 클래스만 할 수 있지만 인터페이스는 적용 개수에 제한이 없음! 여러 인터페이스를 적용하고 싶으면 , 기호를 사용하여 인터페이스를 나열해 입력해주면 됨!// 부모 클래스class Idol { final String name; final int membersCount; Idol(this.name, this.membersCount); void sayName() { prin..

1. 상속상속은 어떤 클래스의 기능을 다른 클래스가 사용할 수 있게 하는 기법임! extends 키워드를 통해 상속할 수 있음!기능을 물려주는 클래스를 부모 클래스, 물려받는 클래스를 자식 클래스라고함.아래에 부모 클래스를 만들고 그 이후 자식 클래스를 만들어서 상속을 받는 예시 코드를 작성해 보겠음.class Idol { final String name; final int membersCount; Idol(this.name, this.membersCount); void sayName() { print("저는 {this.name}입니다."); } void sayMembersCount() { print("{this.name}멤버는 ${this.membersCount}..