모든 정보는 노마드 코더 강의에서 가져왔습니다.
https://nomadcoders.co/dart-for-beginners
Dart 시작하기 – 노마드 코더 Nomad Coders
Flutter 앱 개발을 위한 Dart 배우기
nomadcoders.co
Variable
void main() {
var name = "내꼬"; // var을 사용하면 타입엠 맞게 변경해줌
String name2 = "니꼬"; //String같은 명확한 타입으로도 정의 가능
// name = 1; error
name = 'nice'; // 변수도 변겨할때 타입만 같으면 언제든지 변경 가능
}
var : 정해지지 않은 변수 타입으로 변수를 초기화할때 초기화한 타입에 따라 바뀜
void main() {
var name; // 변수를 초기화하지 않으면 타입은 dynamic이 된다
//dynamic name; 이것도 가능
name = "내꼬"; // name 의 타입이 String
name = 1; // name 의 타입이 int
name = false; // name의 타입이 boolean
if(name is String){
}
if(name is int)[
]
}
dynamic : 정해지지 않은 변수 타입이지만 var과 다르게 변수를 생성할때 초기화 하지 않기 때문에 나웅에 타입이 String 에서 int로 변하고 int 에서 boolean으로 변해도 오류가 발생하지 않는다
void main() {
var name = 'nico';
// String name = 'naco';
name = 'kas'; // 초기화할때와 같은타입이면 수정가능
// name = 12; error 같은 타입이 아니라 오류
final name2 = "nico"; //final이란 js에 비교하면 const와 비슷한건데 한번 지정하면 변경 불가
// name2 = 'kasd'; error 같은 타입이지만 final때문에 변경불가
late final String name3; // late는 초기 데이터 없이 변수를 생성할 수 있게 해준다
// 만약 api요청을 받는다면 그 후에 name3에 값을 넣어도 된다.
name3 = 'hello'; // late로 나중에 변수를 넣을 수 있다.
//name3 = 'world'; error final이 들어가서 한번 정의했기 때문에 변경 불가
const API = 121212; // const는 하나의 상수인데 컴파일을 하기 전에 미리 알아놔야 하는 변수라고 생각하면 편하다 컴파일러가 컴파일을 하기 전에 API값이 121212라는것을 알고 컴파일을 한다는 느낌이다
//cosnt API2 = fetchApi(); 이것처럼 API2라는 변수의 값이 fetchApi();라는 함수로 나오는거면 이것은 const가 아닌 final이나 var이 적절하다
}
final : 변수에 final을 넣으면 그 변수가 초기화 되고 나서는 값 변경 불가.
late : 변수에 late를 넣으면 그 변수는 선언만 하고 초기화는 나중에 해도 상관 없음 (예를 들면 late변수를 만들고 api 값을 받아오고 난 뒤에 api값을 late변수에 넣을 때 사용 가능 )
const : const는 하나의 상수인데 컴파일을 하기 전에 미리 알아놔야 하는 변수라고 생각하면 편하다
const와 final과의 차이점은??
const는 컴파일 전부터 지정된 변수이고
final은 컴파일 중에 만들어진다.
void main(){
String name = 'name';
name = null;
}
위처럼 변수에 null값을 넣으면 Dart언어에서는 Null Safety에 의해서 오류가 발생하게 된다
- Null Safety란? : Dart의 기능으로서 잘못된(null)상태의 변수를 참조하는것을 막아주는것으로 한마디로 코드에 null값이 있다면 오류로 생각하는것이다.
하지만 가끔씩 어떠한 변수가 null값이 되기를 원할때는
void main(){
String name = 'name';
name = null;
}
이렇게 하면 되는데 이러면 컴파일러는 name이라는 변수에 null값이 들어갈 수도 있다고 생각한다
'Dart' 카테고리의 다른 글
[Dart] 5. Dart Class (다트 클래스) (1) | 2024.07.22 |
---|---|
[Dart] 4. Dart functions(다트 함수) (6) | 2024.07.20 |
[Dart] 3. Dart DataTypes (다트 데이터타입) (0) | 2024.07.09 |
[Dart] 1. About Dart (다트에 대해) (0) | 2024.06.26 |