일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 | 29 | 30 | 31 |
- Spring
- rails
- C로 시작하는 컴퓨터 프로그래밍4판
- 일본어
- java
- 디지몬
- javascript
- 비즈니스일본어
- ruby
- 건담베이스
- 日本語
- 一日一つメソッド
- Web
- メソッド
- vscode
- Python
- 반다이몰
- DART
- 인프런
- nico
- Flutter
- CSS
- html
- 건담
- 연습문제
- 単語
- jsp
- springboot
- 자바
- rails7
- Today
- Total
AR삽질러
Dart Variables- (2) 본문
1. Dart main함수
우선 Flutter로 앱개발을 하기 앞서서 Dart공부를 하기로 했다.
오늘은 Dart의 main함수부터 배워보고 같이 개발하는 친구에게 설명해줄 생각이다.
기본적으로 Dart와 Flutter의 공부는 VSCode에서 진행한다.
설치 및 환경설정후 초기화면
void main() {
print('Hello world!!');
}
main함수는 모든 Dart프로그로밍의 Entry Point이다.
반드시 'hellow world'전에 main method가 있어야한다.
Python과 비슷하지만 꼭 ";"세미콜론을 붙여야한다.
2. Dart 변수(Variable)
2-1) 변수를 선언하는 방법1
var를 선언하여 변수를 만드는 방법
- 함수나 메소드 내부에 local variable을 선언할떄는 var를 사용한다.
void main() {
var name = 'AR';
}
Dart에서는 변수의 타입을 선언할 필요가 없다. 이유는 Dart 컴파일러는 name이 String(문자열)이라는것을 알고 있기 때문이다.
만약 변수를 재사용하고 싶다면 본래 타입과 일치해야한다. 현재 String(문자열) name을 int(정수형)으로 바꿀수 없다.
2-2) 변수를 선언하는 방법2
var를 선언하지 않고 타입을 선언하여 변수를 만드는 방법
- 필요시 언제든 var에서 String으로 변경할 수 있다.
3. Dynamic타입
여러가지 타입을 가질 수 있는 변수에 사용하는 키워드로 해당 변수의 타입을 알 수 없을 때 주로 사용된다.)
변수를 선언할 때 dynamic을 사용하거나 값을 지정하지 않으면 dynamic타입을 가지게된다.
void main(){
var name;
}
이렇게 변수를 선언했지만 값을 지정하지 않으면 dynamic타입을 가지게된다.
void main() {
var name;
name = 'AR';
name = 10;
name = false;
}
dynamic은 이렇게 다른 타입을 선언하는 것이 가능하다. 그럼 이 쓸모없어 보이는 dynamic은 무엇일까..
이런식으로 들어오는 데이터의 타입을 알 수 없을 경우 dynamic을 이용하여 타입을 확인할 수 있어 유용하게 사용할 수 있다.
4. Null Safety
- Null Safety는 개발자가 null값을 참조할 수 없도록하는 기능이다.
만약 null값을 참조하는 코드를 생성하면 런타임에러가 발생한다.
void main(){
isEmpty(null);
}
bool isEmpty(String string) => string.length == 0;
void main(){
isEmpty(null);
}
위와같이 String(문자형)타입의 데이터가 null이기 때문에 에러가 발생한다.
Dart에서는 이러한 null값을 허용하지 않기 위해서 "?" 를 사용한다.
예로 String(문자형)과 null을 사용하고 싶다면
void main(){
String? ar = 'AR';
ar = null;
}
타입뒤에 "?"를 붙여주는 것으로 Dart에서 변수 ar이 String일수도 null일 수도 있다는것을 인식하게된다.
이 변수를 사용하기전에 조건문 검사를 통해준다.
조건문1)
void main(){
String? name = 'name';
name = null;
if(name != null){
name.isNotEmpty;
}
}
조건문2)
void main(){
String? name = 'AR';
name = null;
name.isNotEmpty;
}
5. 상수 Final Variables
- 상수Final과 Const 키워드는 값을 변경할 수 없는 변수를 선언할 수 있다.
Final
- 런타임에서 값이 할당될 수 있고 선언 시점이나 런타임에서 한번만 값을 할당할 수 있다.
- final 변수의 값을 런타임 동안 변경할 수 없기 때문에 선언시나 생성자에서 초기화를 해야한다.
- 만약 변수에 String(문자형)을 선언한뒤 int(정수형)을 넣을 수는 없다.
void main(){
String name = 'AR';
name = 'RA';
name = 12;
}
값이 변경되지 않게 하기 위해 final 로 변경해줘야한다.
void main() {
final String name = 'AR';
name = 'RA';
}
void main() {
final name = 'AR';
name = 'RA';
}
6. Late Variables
- late는 final이나 var앞에 붙는 수식어다.
- 변수를 나중에 초기화 할 수 있는 방법을 제공하는 기능으로 late 키워드를 사용하여 나중에 초기화될 변수를 선언할 수 있다.
즉, Late Variables 를 사용하면 변수를 선언할 때 즉시 초기화하지 않아도 나중에 들어오는 값을 할당하는 것이 가능하기 때문에 조건에 따른 로직을 구현할 수 있다.
void main() {
late final String name;
name = 'AR';
name = 10;
}
하지만 이역시 final이 붙어있기 때문에 단 한번만 값을 할당할 수 있다.
7. Contant Variables
Const 키워드는 앞의 final과 유사하다. const는 compile-time constant를 만들어 변수에 한번 값을 할당하게 되면 수정할 수 없는 상수가 된다.
- const는 값을 알고 있어야한다는 점이 다르다.
- final은 어떤 값이 들어올지 모르거나 입력값을 받을때 final이나 var를 사용할 수 있다.
9. Dart Variables 정리
9-1) Type
메소드나 작은 함수안에서 지역변수를 선언할때 var를 사용하는 것이 추천된다.
void main(){
int a = 10;
var name = 'AR';
}
void main(){
int a = 10;
var name = 'AR';
a = 10000;
name = 'nico';
}
변수의 타입을 지키면서 값을 수정하는 것이 가능하다.
9-2) 상수
final 변수에 값을 한번만 할당하여 변할 수 없는 값을 만들때
void main(){
final name = 'AR';
name = '100'; // 불가
}
9-3) dynamic
dynamic은 자주사용하는 것은 좋지 않지만 들어오는 데이터의 타입을 모를떄 사용한다.
타입이 dynamic이라면 변수에 String, int등이 들어올 수 있다.
void main(){
dynamic name;
name = '100';
name = 12;
name = false;
}
정해지지 않은 타입을 사용하기 때문에 dynamic을 사용하기 전에 조건문을 통해 확인을 해줘야한다.
void main() {
dynamic name;
if(name is String){
name.
}
}
9-4) const
const는 수정할 수 없는 상수값이며 컴파일시 값을 가지고 있는 변수를 만드는 방법이다.
final은 런타임 중에 만들어질 수 있고 const는 런타임중에 만들어질 수 없기 때문에 미리 값을 할당해야한다.
void main() {
const name = 'AR';
name = 'RA';
final String name; // 가능
const // 불가
}
9-5) nullable
nullable은 null값을 참조하지 못하게 해준다.
void main() {
String name = 'AR';
name = null;
}
하지만 null이 필요할 경우 "?"룰 추가해준다.
void main() {
String? name = 'AR';
name = null;
if (name != null) {
name.isEmpty;
}
}
void main() {
String? name = 'AR';
name = null;
name?.isEmpty;
}
9-6) Late
late는 final, var, String등 타입앞에 사용할 수 있는 수식어로 아직 들어올 데이터의 형태에 대해 모를때 사용된다.
void main() {
late final String name;
name = 'AR';
print(name);
}
'Dart' 카테고리의 다른 글
Dart Typedef - (5) (0) | 2023.09.02 |
---|---|
Dart Functions - (4) (0) | 2023.09.02 |
Dart DataTypes - (3) (2) | 2023.08.28 |
Dart - 설치 및 환경설정(1) (0) | 2023.08.22 |
Dart 입문(0) (0) | 2023.08.21 |