안녕하세요. 성조입니다.
이번 포스팅은 플러터를 활용하기 위해 사용되는 언어인 Dart에 대하여 포스팅해 보려 합니다.
혹여나 올바르지 못한 지식 전달이 있는 경우 언제든지 피드백 댓글 남겨주시면 감사드리겠습니다.
개발 환경
windows 10 그리고 DartPad를 활용해서 진행될 예정입니다.
DartPad
dartpad.dev
기본 Dart 언어 시작하기
Dart 언어의 경우 기존 프로그래밍에서 많은 구문을 차용한 것 같다.
C와 Java에서는 기본 문법 구조와 명령어, 클래스 기반의 객체 지향 프로그래밍 방식등 다양한 패턴의 뼈대를 가져왔다.
Python의 print("hello")에서 사용하는 것처럼 값을 출력한다.
이후 포스팅에서 다뤄지겠지만 Null-safety를 가지고 있으며, 동적 언어 특징 등을 포함하여 다양한 프로그램에서 구문을 가져온 것으로 보인다.
다트 패드를 활용하여 가벼운 코딩을 진행한다.
void main() {
print('hello');
}
위 내용을 DartPad에 입력하면 Console에 hello라는 값이 출력된다.
프로그래밍에는 많은 정적 타이핑 언어와 동적 타이핑 언어가 존재하는데
Dart 언어의 경우 var, dynamic등 동적 언어를 지원하지만 명시적으로 타입을 지정하는 정적 타이핑 언어를 선택한다. javascript의 경우 var는 지양하고, let을 사용하는 것을 지향하는 것처럼 가능하면 타입이 있어야 협업 생산성이 높아지는 분위기다.
데이터 타입
void main() {
int age = 10;
double pi = 3.141592;
String text = 'Hello, Dart!';
bool isActive = true;
print(age);
print(pi);
print(text);
print(isActive);
}
위와 같이 대부분 이미 이전에 정적 타입 언어들에 타입들을 가지고 있기 때문에 Java나 C언어를 배웠던 사람이면 쉽게 타입에 대해 알아갈 수 있을 것이다.
자료형
// List 타입은 배열과 유사하다.
List<int> numbers = [1, 2, 3, 4];
List<String> cities = ['Seoul', 'Tokyo', 'New York'];
// Set 타입은 중복되지 않은 항목의 집합을 나타낼 때 사용한다.
Set<String> colors = {'red', 'green', 'blue'};
// Maps 타입은 키와 값의 쌍으로 구성된 자료형이다.
Map<String, int> fruitRanking = {
'apple': 1,
'banana': 2,
'cherry': 3
};
List, Set, Maps는 Python이나, Java 등 다른 언어에서도 많이 사용되는 자료형이다.
위 예시를 작성해놨다.
var 키워드와 dynamic
var name = 'Dart'; // String 타입으로 추론된다
dynamic variable = 'Hello';
variable = 123; // 이렇게 다른 타입의 값으로 변경할 수 있다.
var 키워드는 최초 한번 부여된 타입으로 타입을 지정하지는 않았지만 사용된 이후에는 정적으로 사용되는 형태이다.
dynamic 키워드는 타입이 한번 지정되어 사용되더라도 다음 다른 타입을 언제든지 받아서 사용할 수 있다.
Null-Safety
- ?는 데이터가 null을 가지고 있어도 허용한다.
- !는 데이터가 null을 가지고 있으면 안 된다.
2개의 형식으로 정리할 수 있다.
위 데이터처럼 값이 할당되면 에러는 사라진다.
void main() {
int? nullableInt;
String? nullableString;
int? notNullInt = 10;
int notNullIntTest = notNullInt!;
print(nullableInt);
print(nullableString);
print(notNullInt);
print(notNullIntTest);
}
int? // = 변수;
Nullable Type은 int? 변수;를 활용해서 활용이 가능하다.
null을 확인하는 Non-Nullable Type 확인 연산자는 다음과 같이 사용된다.
int? nullableInt = 10;
int nonNullableInt = nullableInt!;
?. 연산자
String? name;
int? length = name?.length; // name이 null이면 length도 null
해당 연산자는 null 조건부 프로퍼티 액세스 연산자이다. null이면 null을 보내고 아닌 경우 지정된 프로퍼티나 메서드를 호출하여 사용하는데 사용된다.
late 키워드
처음에 타입과 함께 변수를 선언하고, 선언은 하지 않은 값이 필요한 경우.
late 키워드를 활용하여 변수를 선언하고, 사용한다.
late int x;
void init() {
x = 5;
}
오타나 궁금한 부분이 있다면 언제든지 댓글 남겨주시면 확인하고, 답변드릴 수 있도록 노력하겠습니다.
다음 포스팅 때 뵙겠습니다. 감사합니다.
'Flutter' 카테고리의 다른 글
[Flutter] StatelessWidget과 StatefulWidget의 차이점 정리 (0) | 2023.08.19 |
---|---|
[Flutter] 플러터 핫 리로드(Hot Reload)와 핫 리스타트(Hot Restart) 정리 (0) | 2023.08.16 |