메서드
·
다트🎯
Methods 개념메서드는 객체에 행동(동작)을 부여하는 함수야. 즉, 클래스 안에서 정의되고, 그 클래스의 인스턴스가 호출할 수 있는 함수지.Instance methods (인스턴스 메서드)인스턴스 메서드는 객체의 인스턴스 변수와 this에 접근할 수 있어.import 'dart:math';class Point { final double x; final double y; Point(this.x, this.y); double distanceTo(Point other) { var dx = x - other.x; var dy = y - other.y; return sqrt(dx * dx + dy * dy); }}여기서 distanceTo는 Point 객체끼리의 거리를 구하는 인스턴스..
생성자
·
다트🎯
Constructors 한눈에 보기생성자는 인스턴스를 만드는 특수 함수야.기본 생성자(default) 빼고는 클래스 이름과 동일한 이름(또는 ClassName.name 형태)을 써.종류는 크게 이렇지:Generative: 진짜로 새 인스턴스를 만들고 필드를 초기화.Default: 아무 생성자도 안 쓰면 자동 제공(매개변수 없음, 이름 없음).Named: 목적을 드러내거나 여러 생성자를 제공할 때.Const: 컴파일 타임 상수 인스턴스 생성.Factory: 캐시에서 기존 인스턴스를 돌려주거나 하위 타입 인스턴스를 반환할 때, 혹은 생성 전에 비 trivial 로직이 필요할 때.Redirecting: 같은 클래스의 다른 생성자로 호출을 위임.Generative constructors가장 기본형. 인스턴스를 ..
클래스
·
다트🎯
Classes (클래스)Dart는 완전한 객체지향 언어라서, 모든 게 **객체(Object)**야. 그리고 그 객체들은 전부 클래스의 인스턴스지. Null만 빼고 모든 클래스는 Object를 상속받아.Dart는 **믹스인 기반 상속(mixin-based inheritance)**을 쓰는데, 이 말은 한 클래스는 무조건 부모 클래스가 딱 하나지만, 클래스의 본문(body)은 여러 클래스 계층에서 재사용할 수 있다는 뜻이야.또한 Dart는 **확장 메서드(extension method)**라는 걸 제공해서, 기존 클래스를 바꾸거나 상속하지 않고도 기능을 더할 수 있어.그리고 **클래스 한정자(modifier)**를 통해서, 특정 클래스가 다른 라이브러리에서 상속 가능한지 제한할 수도 있지.📌 클래스 멤버 ..
라이브러리 가져오기
·
다트🎯
Libraries & Imports (라이브러리와 임포트)Dart에서는 파일 하나하나가 전부 라이브러리야. 그리고 이 라이브러리라는 개념이 단순히 코드 묶음일 뿐만 아니라, **프라이버시(접근 제어)**의 단위이기도 해.예를 들어, 변수나 함수 이름이 _(언더스코어)로 시작하면, 그건 해당 라이브러리 안에서만 보이고, 바깥에서는 접근할 수 없어.다른 언어처럼 public, private 키워드를 쓰는 게 아니라, Dart는 _와 라이브러리 단위로 간단히 구분하는 거지.그리고 Dart에서 작성한 라이브러리는 패키지 형태로 배포할 수도 있어.📥 라이브러리 불러오기 (import)다른 파일이나 라이브러리를 쓰려면 import를 써.예를 들어, 웹 개발할 때 자주 쓰는 dart:js_interop을 불러올 땐..
메타데이터
·
다트🎯
MetadataDart에서는 **메타데이터(metadata)**라는 걸 붙여서 코드에 추가적인 정적 정보를 줄 수 있어.메타데이터는 @로 시작하고, 컴파일 타임 상수(예: deprecated)나 상수 생성자 호출을 참조해서 만든 거야.이건 주석이 아니라, 도구(컴파일러, 분석기, IDE 등)에게 의미 있는 힌트나 규칙을 알려주는 역할을 해.클래스, 메서드, 변수, 라이브러리 선언 같은 다양한 위치에 붙일 수 있어.내장 어노테이션 (Built-in annotations)Dart는 기본적으로 몇 가지 어노테이션을 제공해:@Deprecated('메시지')→ 이 선언은 곧 없어질 예정이니까 쓰지 말고 대체 방법을 쓰라는 표시.보통 "대체 함수 이름"이나 "언제 제거 예정인지" 같은 설명을 넣어줌.@depreca..
함수
·
다트🎯
FunctionsDart는 진짜 객체지향 언어라서 함수도 객체야. 즉, 함수도 Function 타입을 가지고 있어서 변수에 담을 수 있고, 다른 함수의 인자로 넘길 수도 있어. 심지어 클래스의 인스턴스를 함수처럼 호출할 수도 있지.함수 정의하기보통 함수는 이렇게 정의해:bool isNoble(int atomicNumber) { return _nobleGases[atomicNumber] != null;}타입을 생략해도 되긴 하지만, 공식 스타일 가이드(Effective Dart)는 공개 API에는 타입 명시를 권장해.짧은 함수라면 화살표 문법(=>)을 쓰면 간단해:bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;여기서 => expr..

메서드
·
다트🎯
Methods 개념메서드는 객체에 행동(동작)을 부여하는 함수야. 즉, 클래스 안에서 정의되고, 그 클래스의 인스턴스가 호출할 수 있는 함수지.Instance methods (인스턴스 메서드)인스턴스 메서드는 객체의 인스턴스 변수와 this에 접근할 수 있어.import 'dart:math';class Point { final double x; final double y; Point(this.x, this.y); double distanceTo(Point other) { var dx = x - other.x; var dy = y - other.y; return sqrt(dx * dx + dy * dy); }}여기서 distanceTo는 Point 객체끼리의 거리를 구하는 인스턴스..
생성자
·
다트🎯
Constructors 한눈에 보기생성자는 인스턴스를 만드는 특수 함수야.기본 생성자(default) 빼고는 클래스 이름과 동일한 이름(또는 ClassName.name 형태)을 써.종류는 크게 이렇지:Generative: 진짜로 새 인스턴스를 만들고 필드를 초기화.Default: 아무 생성자도 안 쓰면 자동 제공(매개변수 없음, 이름 없음).Named: 목적을 드러내거나 여러 생성자를 제공할 때.Const: 컴파일 타임 상수 인스턴스 생성.Factory: 캐시에서 기존 인스턴스를 돌려주거나 하위 타입 인스턴스를 반환할 때, 혹은 생성 전에 비 trivial 로직이 필요할 때.Redirecting: 같은 클래스의 다른 생성자로 호출을 위임.Generative constructors가장 기본형. 인스턴스를 ..
클래스
·
다트🎯
Classes (클래스)Dart는 완전한 객체지향 언어라서, 모든 게 **객체(Object)**야. 그리고 그 객체들은 전부 클래스의 인스턴스지. Null만 빼고 모든 클래스는 Object를 상속받아.Dart는 **믹스인 기반 상속(mixin-based inheritance)**을 쓰는데, 이 말은 한 클래스는 무조건 부모 클래스가 딱 하나지만, 클래스의 본문(body)은 여러 클래스 계층에서 재사용할 수 있다는 뜻이야.또한 Dart는 **확장 메서드(extension method)**라는 걸 제공해서, 기존 클래스를 바꾸거나 상속하지 않고도 기능을 더할 수 있어.그리고 **클래스 한정자(modifier)**를 통해서, 특정 클래스가 다른 라이브러리에서 상속 가능한지 제한할 수도 있지.📌 클래스 멤버 ..
라이브러리 가져오기
·
다트🎯
Libraries & Imports (라이브러리와 임포트)Dart에서는 파일 하나하나가 전부 라이브러리야. 그리고 이 라이브러리라는 개념이 단순히 코드 묶음일 뿐만 아니라, **프라이버시(접근 제어)**의 단위이기도 해.예를 들어, 변수나 함수 이름이 _(언더스코어)로 시작하면, 그건 해당 라이브러리 안에서만 보이고, 바깥에서는 접근할 수 없어.다른 언어처럼 public, private 키워드를 쓰는 게 아니라, Dart는 _와 라이브러리 단위로 간단히 구분하는 거지.그리고 Dart에서 작성한 라이브러리는 패키지 형태로 배포할 수도 있어.📥 라이브러리 불러오기 (import)다른 파일이나 라이브러리를 쓰려면 import를 써.예를 들어, 웹 개발할 때 자주 쓰는 dart:js_interop을 불러올 땐..
메타데이터
·
다트🎯
MetadataDart에서는 **메타데이터(metadata)**라는 걸 붙여서 코드에 추가적인 정적 정보를 줄 수 있어.메타데이터는 @로 시작하고, 컴파일 타임 상수(예: deprecated)나 상수 생성자 호출을 참조해서 만든 거야.이건 주석이 아니라, 도구(컴파일러, 분석기, IDE 등)에게 의미 있는 힌트나 규칙을 알려주는 역할을 해.클래스, 메서드, 변수, 라이브러리 선언 같은 다양한 위치에 붙일 수 있어.내장 어노테이션 (Built-in annotations)Dart는 기본적으로 몇 가지 어노테이션을 제공해:@Deprecated('메시지')→ 이 선언은 곧 없어질 예정이니까 쓰지 말고 대체 방법을 쓰라는 표시.보통 "대체 함수 이름"이나 "언제 제거 예정인지" 같은 설명을 넣어줌.@depreca..
함수
·
다트🎯
FunctionsDart는 진짜 객체지향 언어라서 함수도 객체야. 즉, 함수도 Function 타입을 가지고 있어서 변수에 담을 수 있고, 다른 함수의 인자로 넘길 수도 있어. 심지어 클래스의 인스턴스를 함수처럼 호출할 수도 있지.함수 정의하기보통 함수는 이렇게 정의해:bool isNoble(int atomicNumber) { return _nobleGases[atomicNumber] != null;}타입을 생략해도 되긴 하지만, 공식 스타일 가이드(Effective Dart)는 공개 API에는 타입 명시를 권장해.짧은 함수라면 화살표 문법(=>)을 쓰면 간단해:bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;여기서 => expr..
관리 흐름 - 에러 핸들링
·
다트🎯
Error handlingDart에서 에러 처리는 **예외(Exceptions)**라는 메커니즘으로 다뤄져. 뭔가 예상치 못한 상황이 생기면 throw로 예외를 던지고, try-catch로 잡아서 처리할 수 있어. 만약 잡히지 않으면 해당 isolate(프로그램 실행 단위)가 중단되고 보통 프로그램 자체가 종료돼.Dart는 Java랑 달리 모든 예외가 unchecked야. 즉, 메서드가 어떤 예외를 던질 수 있는지 선언할 필요도 없고, 반드시 catch해야 하는 강제 규칙도 없어. 대신 기본적으로 Exception이나 Error 같은 타입들이 있고, 네가 직접 새로운 예외 클래스를 만들어 던질 수도 있어. 심지어 문자열이나 다른 객체도 예외로 던질 수 있어(비추천).Throw예외를 던지는 건 이렇게 해:..
관리 흐름 - 분기
·
다트🎯
BranchesDart에서 분기(branch)는 조건에 따라 코드 흐름을 나누는 도구야. 크게 보면 if, if-case, switch (문/식), 그리고 여기에 덧붙는 Exhaustiveness checking(빠짐없이 검사), Guard clause(추가 조건) 기능들이 있어. 하나씩 편하게 풀어줄게.If가장 기본적인 조건문이지. 조건식은 반드시 bool 값을 줘야 해.if (isRaining()) { you.bringRainCoat();} else if (isSnowing()) { you.wearJacket();} else { car.putTopDown();}if → 조건이 true면 실행.else if → 앞 조건이 false면 다른 조건을 검사.else → 어느 것도 해당 안 되면 실행.표..
관리 흐름 - 반복
·
다트🎯
LoopsDart에서 반복은 크게 for, while / do-while, 그리고 흐름을 건너뛰거나 끊는 break / continue, 마지막으로 바깥 루프를 지정할 수 있는 label로 다뤄. 각각 어떻게 동작하는지, 그리고 헷갈리기 쉬운 포인트를 친근하게 풀어서 설명해볼게. 아래 코드들은 전부 그대로 실행되는 예시야.For loops일반적인 카운터 기반 for 루프는 이렇게 써. 초기화 → 조건 → 증감이 한 줄에 모여 있어서 반복 횟수가 뚜렷할 때 좋아.var message = StringBuffer('Dart is fun');for (var i = 0; i Dart의 for 루프에서 클로저가 인덱스 값을 제대로 캡처한다는 것도 포인트야. 자바스크립트에서 흔히 보던 “모든 콜백이 마지막 값만 찍는..
패턴의 종류
·
다트🎯
Pattern types아래는 패턴의 종류를 정리한 참고서 느낌의 설명이야. 전체적인 작동 원리나 어디서 쓰는지는 패턴 개요 페이지에서 다뤘고, 여기선 각 패턴 타입 자체만 딱딱 짚어볼게. 패턴도 연산자처럼 우선순위가 있어서, 괄호 패턴으로 묶으면 더 낮은 우선순위를 먼저 평가하게 만들 수 있어.정리하면, 낮은 → 높은 우선순위 순으로 적혀 있고, cast / null-check / null-assert 같은 후위 단항 패턴은 서로 같은 레벨이야. 레코드/리스트/맵 같은 컬렉션 패턴과 오브젝트 패턴은 다른 데이터를 감싸는 바깥 패턴이라 우선 평가돼.Logical-or한 패턴이든 다른 패턴이든 둘 중 하나라도 맞으면 매칭이야. 왼쪽부터 순서대로 평가하고, 하나가 맞으면 뒤는 안 봐.var isPrimary..