잘못된 내용은 언제든지 밑의 댓글로 알려주세요!
Dart language
Dart는 구글이 개발한 웹 프로그래밍 언어로, 자바스크립트나 리액트처럼 많이 대중화된 프로그래밍 언어는 아닙니다. 그러나 제가 Dart를 배우는 이유는
Cross-Platform FrameWork인 flutter를 사용하기 위함입니다. 그래서 이번 포스팅에서는 flutter를 위한 dart의 기본 문법을 정리해보겠습니다.
Dart 기본 문법
1. void main()
Dart를 실행시키면 가장 먼저 볼 수 있는 코드입니다. dart는 코드를 볼때 main 함수를 가장 먼저 실행시킨다. 그렇기에 class를 main함수 밖에 만든 후,
이를 main에 넣어 줘야 실행이 됩니다. 코드를 짜는 형식이 이렇기 때문에 아마 ‘플러터는 모든 것이 Widget이다.’라고 하는 것 같습니다. 그럼 이제 코드를 구체적으로 살펴보겠습니다.
2. 변수 설정
1
2
3
4
5
6
int age = 30;
double height = 180.3;
num weight = 75.5; // num은 int와 double을 모두 커버할 수 있습니다.
height = age as double; // double과 int는 서로 할당이 불가능합니다. as를 통해 할당할 수 있습니다.
String name = 'minki';
bool isNight = false;
기본적으로 dart에서는 한번 선언된 변수 타입은 바꿀 수 없습니다. 만약 변수 타입을 지정하고 싶지 않다면 다음을 이용하여 변수를 설정하면 됩니다.
1
2
3
dynamic a = 10;
final b = 10; // final로 선언하면 변수 타입을 지정해주지 않아도 되지만 할당된 값을 바꾸지 못합니다.
const c = 'Happy'
const와 final은 할당된 변수값을 바꿀 수 없다는 공통점이 있습니다. 그러나 const은 compile-time constants로 런타임동안이 아니여도 컴퓨터가 이 상수에 할당된 값을 파악하고 있습니다. 그렇기에 const는 메모리를 임의할당하는 변수타입이고, final은 런타임 시에만 할당된 값을 확인하므로 메모리를 동적으로 할당하는 변수타입이라고 쉽게 이해할 수 있습니다.
3. 함수 설정
함수를 설정한 다음에 적절한 변수 지정으로 함수에 할당된 값을 호출할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main() {
String greet = greeting();
int age = getAge();
print(greet); // hello
print(age); // 50
}
String greeting() {
return 'hello';
}
int getAge() {
return 50;
}
4. List 생성
List 생성법은 다른 언어랑 유사한 방식입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 변수 타입 상관 없는 리스트 생성법
List samples = ['a', 2, 3.8];
samples.add('d'); // List에 값 추가
samples.add(30)
samples.remove('d'); // List 값 제거
// 변수 타입 지정 리스트 생성법
List<String> foods = ['우유', '라면', '고기'];
void main() {
// items1은 처음에 스트링만 넣었기 때문에 String으로 List 타입이 고정됨
var items1 = ['라면', '우유', '냄비'];
items1.add('사탕');
items1.add(1); // 에러 발생
print(items1); // [라면, 우유, 냄비, 사탕]
// items2는 스트링과 num이 섞여 있기 때문에 타입 고정이 안됨
var items2 = ['라면', '우유', 2];
items2.add('너구리');
items2.add(1);
items2.add(1.5);
print(items2); // [라면, 우유, 2, 너구리, 1, 1.5]
// list에 list를 추가하는 방법
var items3 = [...items1, ...items2, 5];
print(items3); // [라면, 우유, 냄비, 사탕, 라면, 우유, 2, 너구리, 1, 1.5, 5]
}
5. Map 생성
map은 json타입과 유사한 형식으로 작성하면 됩니다.
1
2
3
4
5
6
7
8
void main() {
var itemMap = {
'key1' : 1,
'key2' : 2,
'key3' : 3,
};
print(itemMap['key1']); // 1
}
6. 조건문
조건문도 마찬가지로 다른 함수와 매유 유사합니다.
1
2
3
4
5
6
7
8
9
10
void main() {
// is not = !is
var coffee = 'americano';
if(coffee is String) {
print('문자열입니다.');
} else {
print('문자가 아님');
}
}
조건문은 ?를 사용해 더 쉽게 표현할 수 있습니다. ?를 사용하는 코딩을 통해 flutter앱이 실행될 시 런타임을 죽이지 않을 수 있습니다.
- ?? : name이 null일 경우만 수행
- ? : name2가 null이 아닐 경우 수행
1
2
3
4
5
6
7
void main() {
String name;
print(name ?? 'Null입니다.'); // Null입니다.
String name2 = 'ICECREAM';
print(name2?.toLowerCase()); // icecream
}
기본 문법에 대해 살펴보았습니다. 자바스크립트, 리액트와 꽤 많이 유사하다고 느껴져, 아마 이 두 언어에 능숙하신 분들은 금방 하실거라 생각합니다.
reference
- javaexpert
- 오준석의 생존코딩