Dart 시작하기 - 구조 및 변수
2022. 6. 21. 17:00ㆍDEV/Dart
반응형
Flutter를 시작하기 전에 Dart를 먼저 배워보자.
Web IDE - DartPad
IDE 설치는 일단 놔두고 웹에서 간단하게 테스트해보자.
기본 구조
- dart는 기본적으로 main 함수에서 시작한다.
- 코드 종료 시 ;(세미콜론)을 필수로 붙여준다.
main() {
print('Hello');
}
Variable (변수)
var
- 타입을 설정할 필요 없음
- 선언할 때의 값의 타입으로 설정됨
- 선택권이 있는 경우 타입을 명시해주는 것이 가독성을 높여 공동 작업에 용이하게 하자 -> String, int, double, List, Map, enum
- 변수의 타입이 매우 복잡한 경우 var 타입으로 간단하게 명시하기도 한다 eg. Map<int, Map<String, List>>
void main() {
var name = 'Dart';
print(name.runtimeType); // => String : 값의 타입으로 결정됨
Map<String, Map<int, List<String>>> complexType = {};
var complexType = {}; // 간단하게 선언해버리기
}
dynamic Variable
- 모든 타입의 값 대입 가능
- 타입 변경 가능
- var 타입 변수 선언 시 값을 지정하지 않으면 dynamic 변수처럼 여러 타입의 값 대입 가능
void main() {
// var
var name = 'Dart';
name = 1; // => 🚫 A value of type 'int' can't be assigned to a variable of type 'String'.
// dynamic
dynamic test = 'Test';
test = 1;
print(test); // => 1
print(test.runtimeType); // => int : 값의 타입으로 설정됨
// var -> dynamic
var text;
text = 1;
text = 'var';
print(text); // => var
print(text.runtimeType); // => String : 값의 타입으로 설정됨
}
String
void main() {
// 문자 타입 String
String name = 'Dart';
String name2 = 'Flutter';
// 문자 연결
print(name + ' & ' + name2); // => Dart & Flutter
// 변수 사용
print('${name}의 타입은 ${name.runtimeType}이다'); // => Dart의 타입은 String이다
// 간단한 변수의 경우만 {} 생략 가능
print('$name의 타입은 $name.runtimeType 이다'); // => Dart의 타입은 Dart.runtimeType 이다
}
List
void main() {
List btsList = ['진', '슈가', '제이홈', '알엠', '지민', '뷔', '정국'];
print(btsList);
List<String> blackpinkList = ['지수', '제니', '로제', '리사'];
print(blackpinkList[0]);
print(blackpinkList.length);
}
=>
[진, 슈가, 제이홈, 알엠, 지민, 뷔, 정국]
지수
4
Map
void main() {
Map dict = {
'Harry Potter':'해리 포터',
'Ron Weasley':'론 위즐리'
};
Map<String, String> dict2 = {
'Harry Potter':'해리 포터',
'Ron Weasley':'론 위즐리'
};
print(dict);
print(dict2);
// 항목 추가
dict.addAll({
'Herminoe Granger':'헤르미온느'
});
print(dict);
// 수정
dict['Herminoe Granger'] = '헤르미온느 그레인저';
print(dict);
// 삭제
dict.remove('Ron Weasley');
print(dict);
// 키, 값 리스트로 출력
print(dict.keys.toList());
print(dict.values.toList());
}
=>
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리} // dict
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리} // dict2
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리, Herminoe Granger: 헤르미온느} // added
{Harry Potter: 해리 포터, Ron Weasley: 론 위즐리, Herminoe Granger: 헤르미온느 그레인저} // modified
{Harry Potter: 해리 포터, Herminoe Granger: 헤르미온느 그레인저} // removed
[Harry Potter, Herminoe Granger] // key list
[해리 포터, 헤르미온느 그레인저] // value list
enum
enum Status { approved, rejected, pending }
void main() {
Status status = Status.approved;
switch (status) {
case Status.approved:
print('Approved!');
break;
case Status.rejected:
print('Rejected!');
break;
case Status.pending:
print('Pending~');
break;
default:
print('Not Mathced');
break;
}
}
=>
Approved!
Immutable Variable
final vs const
final 또는 const로 변수 선언 시 변수의 값을 변경할 수 없다.
- final : run time에 값이 정해진다.
- const : build time에 값을 알고 있어야 한다.
void main(){
// Immutable
final name = 'Dart';
const name2 = 'Flutter';
name = 'new dart'; // => The final variable 'name' can only be set once.
name2 = 'new flutter'; // => Constant variables can't be assigned a value.
// DateTime
final now = DateTime.now();
const now2 = DateTime.now(); // The constructor being called isn't a const constructor.
}
반응형
'DEV > Dart' 카테고리의 다른 글
Dart Async programming - Stream (0) | 2022.06.24 |
---|---|
Dart Async programing - Future, await (0) | 2022.06.23 |
Dart의 형변환 - List, Map, Set (0) | 2022.06.22 |
Dart의 함수를 알아보자 (0) | 2022.06.22 |
Dart - Null safety & Dart Codelab Exercise (0) | 2022.06.21 |