개발 환경설정을 해봤고 이제 플러터에서 쓰이는
Dart
라는 언어의 기본 문법을 알아보자
Dart 언어? 특징?
- 구글에서 만든 언어
- Flutter를 개발할 수 있다.
- 다른 언어들과 유사한 방법으로 구현 및 사용할 수 있다.
- null safety를 지원한다
- JIT와 AOT 컴파일
- 개발 할 때는 Just-In-Time (JIT) 컴파일해서 빠른 속도의 컴파일이 가능하고 결과 확인 가능
- 배포할 때는 Ahead of Time 방식으로 성능 최적화
이 정도의 특징이 있다.
위에서 언급했듯이 Dart
는 타 언어와 비슷한 사용성을 지녀서 문법이 비슷한 부분이 많이 보인다.
그래서 빠르게 핵심만 살펴보고 넘어가보자
아 참고로 ;
을 끝에 꼭 붙여줘야한다.
변수는 어떤 값을 담는 상자라고 생각하면 이해하기 쉽다
var name = '영희';
print(name); // 영희
print(name.runtimeType); // string (문자)
Dart
는 변수 타입을 자동으로 추론해줘서
위 같은 경우에 영희
라는 값을 넣어줬지만 따로 자료형을 지정하지 않아도 String
이라는 값으로 인식한다.
그리고 이 경우에는 한 번 타입이 지정되면 다른 타입의 값을 할당할 수 없다
그리고 Swift
의 옵셔널과 비슷한 변수도 존재한다.\
Null Safety
라고 불리는데
String? id;
print(id) // null <- 비어있음
id = "myhan601";
print(id); // myhan601
id = null;
print(id); // null
위에서 보다시피 String
자료형에 ?
를 붙여서 사용한다.
String?
이런식으로 작성하는데
기본적으로 변수는 null을 허용하지 않기 때문에
처음 값이 없는 경우에 이런 변수를 사용한다
위의 id나 email 등이 예가 된다
final String number = "1234";
print(number); // 1234
// number = "5678"; // final 때문에 이 코드는 실행 불가능
그리고 final
키워드를 자료형 앞에 붙여서 사용할 수도 있는데
이 경우는 한번 지정한 값을 변경할 수 없다
마지막으로 상수를 지정하는 const
키워드가 있다.
const PI = 3.14;
PI = 3.14159; // 오류 발생 (값 변경 불가)
const
키워드는 final
키워드와 마찬가지로 한번 값을 지정하면 변경할 수가 없다.
그럼 둘의 차이점이 뭐에요?? 싶은 생각이 들었다.
둘이 할당 시점에서 차이를 보이는데
final
: 런타임 시점에 값을 할당
const
: 컴파일 시점에 값을 할당
일단 이렇게만 이해를 했다
오늘은 전반적인 기초 문법이 우선이므로 일단은 넘어가보자
위에서 보여준 String
자료형 이외에도 다양한 자료형이 존재한다.
자료형 | 설명 | 예시 |
---|---|---|
String | '과 "로 이루어진 문자열 | "영희", '영희' |
int | int = 정수 | 3, -4 |
double | double = 실수 | 4.5, -3.1 |
bool | 참, 거짓을 나타내는 자료형 | true, false |
List<T> | 데이터를 여러개 가진 배열 | [1, 3, 5] |
Map<K,V> | 딕셔너리 처럼 {key:value} 형태 | {'name':'영희', 'id':154'} |
dynamic | 모든 자료형을 담을 수 있음 | dynamic age = "food"; age = 20; |
이런 다양한 자료형들이 존재한다.
Dart
는 main 함수부터 시작하여 아래로 실행된다
이때 실행되는 순서를 제어하는 문법이다.
익숙한 if
문을 사용한다.
if (조건1) {
// 조건1이 true면 실행
} else {
// 조건1이 false면 실행
}
다른 언어와 같은 방식으로 사용하며
조건1
이 '참'일 경우에는 첫번채 중괄호 안의 코드가 동작하고
'거짓'일 경우에는 else
의 코드가 동작한다.
그리고 else if
문을 통해서 조건을 여러개 거는것도 가능하다.
if (조건1) {
// 조건1이 true면 실행
} else if (조건2) {
// 조건1이 false이고, 조건2가 true이면 실행
} else if (조건3) {
// 조건1과 조건2가 false이고, 조건3가 true이면 실행
} else {
// 조건1, 조건2, 조건3가 모두 false이면 실행
}
이런식으로 사용할 수 있다.
또 &&
는 And 연산자, ||
는 OR 연산자도 살펴보자
And 연산자는 조건1 && 조건2
인 상황에서 양쪽 값이 모두 true
일때 전체값을 true
로 반환한다.
OR 연산자는 둘 중 하나라도 true
라면 전체값을 true
로 반환한다.
반복문은 특정 코드를 반복해서 실행하도록 하는 방법이며 for문
이라고도 불린다.
for (int i = 0; i < 5; i++) {
print('hello flutter ${i + 1}');
}
이런식으로 작성하며 아래같은 결과를 볼 수 있다.
hello flutter 1
hello flutter 2
hello flutter 3
hello flutter 4
hello flutter 5
i 값이 0부터 4까지 증가하면서 중괄호 내부의 코드를 동작시키고
i가 5가 되는순간 i < 5;
조건에 부합하게 되면서 반복문을 종료한다.
함수와 클래스 내용은 다음 포스팅에서 작성하도록 해보자