잘못된 내용은 언제든지 밑의 댓글로 알려주세요!
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
- 오준석의 생존코딩