컴파일러
- Just in Time(JLT): 프로그램 실행 중에 코드의 일부 도는 전부를 컴파일하는 컴파일러
- Ahead of time(AOT): 프로그램 실행 전에 미리 컴파일하는 컴파일러-고성능 앱 개발
SDK( Software development kit)
: 특정 플랫폼에서 프로그램을 만들고, 테스트하고, 배포하는 과정에서 필요한 도구를 제공하는 패키지
- 컴파일러
- 라이브러리
- 디버깅(오류 수정) 및 테스트 도구
- 문서 및 샘플 코드
- 패키지 관리자
ex) TensorFlow SDK(인공지능 툴)
Dart SDK: Stable/ Beta/DEV 버전으로 배포
Stable: 3개월에 한 번씩 업데이트 되는 안정적인 베포 버전(x.y.z 형태)
Beta: 1달에 한번씩 업데이트 되는 배포 버전, 새로운 기능을 Stable에 넣기 전에 미리 테스트해 보는 용도-안정적 x(x.y.z-a.b beta)
Dev: 2주일에 한번 씩 업데이트 되는 배포 버전, 검증되지 않은 기능이 일부 포함(x.y.z-a.b dev 형태)
# 프로그램 실핼 중에 값을 변경할 수 있는 변수
[타입] [변수 이름] = [값]; // int double String...
var [변수 이름]= [값];
# 프로그램 실행 중에 값을 변경할 수 없는 변수
final변수: 프로그램 실행(런 타임)시점에 초기화/ 프로그램 실행 중에 값이 결정되는 경우 ex) 현재 시간
const 변수: 컴파일 시점/ 프로그램 실행 전이든 실행 후든 상관없이 항상 값이 고정인 경우 ex) 원주율
# late 변수
: 선언 후에 초기화되는 NonNullable 한 변수
late [타입] [변수이름];
late String name; O
late name; X
late String name = null; X
String? name= null; O
- 변수를 선언할 당시에는 넣어줄 값을 아직 특정하기 어려운 경우
late String description;
void main() {
description = '설명입니다.';
print(description); // 설명입니다.
}
- 초기화 비용이 높은 변수가 지금 당장 필요하지는 않은 경우
#Null
: 어떤 변수가 null 이면 ?.을 포함한 표현식 전체가 null이 됩니다.
String? name;
print(name?.length); // null
name = 'Bob';
print(name?.length); // 3
연산자 (Operators)
- 산술 연산자 (+, -, /, *, ~/, %) // [~/]: 나누었을 때 나오는 값의 정수 부분만 반환 [%]: 나누었을 때 나오는 나머지
- 비교 연산자( ==, !=, >, <, >=, <=)
- 타입 체크 연산자( as, is, is!) //[as]: 타입 변환, 확실하게 행 변환 가능할 때만, [is]: 특정 타입을 가지고 있는지 판별, is! 와 반대
- 대입 연산자(=, ??=, +=, -=, *=, /=, %=) // [??=]: ??= 기분으로 왼쪽에 있는 것이 null일 때 오른쪽 값을 대입.
- 논리 연산자(!, ||, &&) // [!]: !기준으로 오른족에 있는 판별식을 반전, [||]: ||기준 왼쪽 오른쪽 중 하나라도 창이면 참 아니면 거짓, [&&]: &&기준으로 왼쪽 과 오른쪽 모두 참이면 참 하나라도 거짓이면 거짓 반환.
조건문
- if- else if- else- else
int a = 3;
if (a < 0) {
print('a 는 음수입니다.');
} else if (a == 0) {
print('a 는 0 입니다.');
} else {
print('a 는 양수입니다.'); // a 는 양수입니다.
}
- Switch
void main() {
int age = 10;
switch (age) {
case 10:
print('10살입니다');
break;
case 9:
print('9살 입니다.');
break;
default:
print('유효하지 않습니다.');
}
}
출력: 10살 입니다.
- 조건 표현식
(조건문) ? (표현식 1) : (표현식2) - 조건문이 참이면 표현식1을, 조건문이 거짓이면 표현식2를 따릅니다
표현식1 ?? 표현식2 - 표현식1이 null값을 갖지 않으묜 표현식1을, 표현식1이 null값을 가지면 표현식 2를 따릅니다.
반복문
- for
- while
- do while
- for in
for in: 초기화 식에 있는 변수를 사용하지 않으면서 collection 요소를 순회할 때 사용
List<String> fruits = ['사과', '바나나', '귤'];
for (var fruit in fruits) {
print(fruit);
}
/*
사과
바나나
귤
*/
# break : 반복문이 실행되고 있던 중에 이제 그만 실행했으면 할 때
int count = 1;
while (count <= 6) {
count += 1;
if (count == 5) {
print('count = $count'); // count = 5
break;
}
}
# continue: 반복문 실행 중에 특정 조건인 경우에는 건너뛰고 싶다 ! 할 때
final fruits = ['사과', '파인애플', '오렌지', '귤', '복숭아'];
for (final fruit in fruits) {
if (fruit == '파인애플') {
continue;
}
print('맛있는 $fruit');
}
/*
맛있는 사과
맛있는 오렌지
맛있는 귤
맛있는 복숭아
*/
#주 석
/// 주석: []를 주석에 포함할 수 있는데 코드의 특정 요소 (ex. 매개변수, 클래스, 메소드, 변수) 를 참조한 문서를 만들고 싶을 때 주석 안에 해당 요소를 []사이에 넣으면 됩니다.