1. 다트 타입(Type)
num
: 정수(int
)와 실수(double
)의 슈퍼타입입니다.int
: 정수를 나타냅니다.double
: 실수를 나타냅니다.String
: 문자열을 나타냅니다.bool
:true
또는false
값을 가지는 불리언(Boolean) 타입입니다.var
: 타입을 명시적으로 지정하지 않고, 나중에 할당된 값에 따라 타입이 결정되는 동적 타입입니다.dynamic
: 타입이 미지정되거나 런타임 중에 타입을 변경할 수 있는 동적 타입입니다.List
: 다트에서 배열을 나타내는데 사용되며, 리스트(List) 데이터 타입입니다.Set
: 순서가 없고 중복된 값이 없는 데이터 집합(Set)을 나타내는 데이터 타입입니다.Map
: 키와 값의 쌍(key-value pair)을 가지는 데이터 타입으로, 연관 배열 또는 딕셔너리(Dictionary)라고도 합니다.
2. 상수(Constant)
상수와 변수의 주요 차이점은 값의 변경 가능 여부입니다. 변수는 값을 변경할 수 있지만, 상수는 값을 변경할 수 없습니다. Dart에서 상수를 선언하는 방법은 final
과 const
키워드를 사용하는 것입니다.
3. 다트 함수 (Dart Function)
Dart는 객체 지향 언어이며, 함수 또한 객체로 취급됩니다. 함수는 객체이므로 다음과 같은 특성을 갖습니다:
3.1 변수가 함수 참조 가능
Dart에서 함수를 변수에 할당하여 참조할 수 있습니다.
String name = getName();
String getName(){
return 'abc';
}
3.2 다른 함수의 인자로 함수 전달 가능
Dart에서 함수는 다른 함수의 인자로 전달할 수 있습니다.
int add(int a, int b){
return a + b;
}
int sub(int a, int b){
return a - b;
}
int operation(int Function(int, int) func, int x, int y){
return func(x, y);
}
void main(){
int a = 10;
int b = 5;
print(operation(add, a, b)); // 함수를 다른 함수의 인자로 전달
print(operation(sub, a, b)); // 함수를 다른 함수의 인자로 전달
}
3.3 이름 있는 선택 매개변수 (Named Optional Parameter)
함수 호출 시 매개변수에 인자 값을 매개변수명을 지정하여 넘길 수 있습니다.
String getAddress(String city, {String district, String zipCode = '111222'}){
return '$city시 $district구 $zipCode';
}
void main(){
print('${getAddress('서울', district: '강남')}');
}
3.4 위치적 선택 매개변수 (Positional Optional Parameter)
함수의 매개변수에 초깃값을 설정하여 함수 호출 시 인자를 생략할 수 있습니다.
String getAddress(String city, [String district = '강남구', String zipCode = '111222']){
return '$city시 $district구 $zipCode';
}
void main(){
print('${getAddress('서울', '마포구')}');
}
3.5 익명 함수 (Anonymous Function) 및 람다 표현식 (Lambda Expression)
Dart에서 익명 함수를 생성할 수 있으며, 이러한 함수를 람다 표현식 또는 클로저라고도 합니다.
// 익명 함수
var multiply = (int a, int b){
return a * b;
}
// 람다 표현식
int subtract(int a, int b) => a - b;
4. 다트 연산자 (Dart Operators)
4.1 산수 연산자
+
: 덧셈-
: 뺄셈*
: 곱셈/
: 나눗셈~/
: 정수 나눗셈%
: 나머지++
: 증가 연산자 (1씩 증가)--
: 감소 연산자 (1씩 감소) 예:
int a = 5;
int b = 3;
int sum = a + b; // 8
int difference = a - b; // 2
int product = a * b; // 15
double quotient = a / b; // 1.6666666666666667
int integerDivision = a ~/ b; // 1
int remainder = a % b; // 2
4.2 할당 연산자
=
: 변수에 값을 할당+=
: 더하고 할당-=
: 빼고 할당*=
: 곱하고 할당/=
: 나누고 할당~/=
: 정수 나누고 할당 예:
int x = 5;
x += 3; // x는 이제 8
x -= 2; // x는 이제 6
x *= 4; // x는 이제 24
x /= 3; // x는 이제 8.0
x ~/= 2; // x는 이제 4
4.3 관계 연산자 (비교 연산자)
==
: 같음!=
: 다름>
: 크다<
: 작다>=
: 크거나 같다<=
: 작거나 같다 예:
int a = 5;
int b = 3;
bool isEqual = (a == b); // false
bool isNotEqual = (a != b); // true
bool isGreater = (a > b); // true
bool isLess = (a < b); // false
bool isGreaterOrEqual = (a >= b); // true
bool isLessOrEqual = (a <= b); // false
4.4 비트 & 시프트 연산자
- 비트 연산자:
&
(AND),|
(OR),^
(XOR),~
(NOT) - 시프트 연산자:
<<
(왼쪽 시프트),>>
(오른쪽 시프트) 예:
int a = 5; // 이진수: 0101
int b = 3; // 이진수: 0011
int bitwiseAnd = a & b; // 1 (이진수: 0001)
int bitwiseOr = a | b; // 7 (이진수: 0111)
int bitwiseXor = a ^ b; // 6 (이진수: 0110)
int bitwiseNot = ~a; // -6 (이진수: 11111010)
int leftShift = a << 2; // 20 (이진수: 10100)
int rightShift = a >> 1; // 2 (이진수: 0010)
4.5 타입 검사 연산자
as
: 형 변환is
: 객체가 특정 타입이면true
를 반환is!
: 객체가 특정 타입이면false
를 반환 예:
String text = 'Hello';
int number = 42;
// 형 변환
double doubleNumber = number as double;
// 타입 검사
bool isString = text is String; // true
bool isInt = text is int; // false
bool isNotString = text is! String; // false
4.6 조건 표현식 (삼항 연산자)
- 조건 ? 표현식1 : 표현식2; 예:
int a = 5;
int b = 3;
int smallerNumber = (a < b) ? a : b; // 3
4.7 캐스케이드 표기법
- 연산자를 사용하여 한 객체로 연속적인 멤버 호출을 수행할 때 사용합니다. 객체를 반복해서 참조하는 불필요한 과정을 줄일 수 있습니다. 예:
class Person {
String name = '';
int age = 0;
}
void main() {
var person = Person()
..name = 'John'
..age = 30;
print(person.name); // John
print(person.age); // 30
}
다트 조건문과 반복문 (Control Flow)
4.1 조건문
if
: 조건이 참인 경우에 블록을 실행if-else
: 조건이 참이면 첫 번째 블록을, 그렇지 않으면 두 번째 블록을 실행switch
: 다양한 조건 값을 기반으로 다른 작업을 수행 예:
int score = 85;
if (score >= 90) {
print('A');
} else if (score >= 80) {
print('B');
} else {
print('C');
}
// switch 문
int choice = 2;
switch (choice) {
case 1:
print('Option 1');
break;
case 2:
case 3:
print('Option 2 or 3');
break;
default:
print('Default Option');
}
4.2 반복문
for
: 지정된 횟수만큼 반복while
: 조건이 참인 동안 반복do-while
: 조건이 참인 동안 반복 (최소 한 번 실행) 예:
// for 문
for (int i = 0; i < 5; i++) {
print('Iteration $i');
}
// while 문
int count = 0;
while (count < 3) {
print('Count: $count');
count++;
}
// do-while 문
int number = 5;
do {
print('Number: $number');
number--;
} while (number > 0);