반응형
- 다트 언어에서 모든 변수는 객체이다. 그래서 int 도 객체 double도 객체이다. 그렇기 때문에 null을 대입할 수 있다.
- Object는 다트의 최사우이 클래스이기 때문에 모든 값을 대입할 수 있다.
- 정수,실수, 문자열,불리언,바이트 데이터등은 다트에서는 dart:code와 dart:type_data라이브러리 클래스로 제공한다.
- 문자열은 ‘hello’ , “hello”, ‘’’hello’’’,“””hello”””로 감싼다. 비교는 == 로한다. 삼중따옴표의 경우 앤터나 탭등이 그대로 반영 된다.
- 다트의 모든 변수는 객체이기 떄문에 형 변환이 자동으로 이뤄지지 않는다. 그래서 아래와 같이 함수를 사용해야한다.
main(){
int n1 = 10;
double d1 = 10.0;
String s1 = '10';
double d2 = n1.toDouble()
int n2 = d1.toInt()
String s2 = n1.toString();
int n3 = int.parse(s1);
}
- 상수 변수는 초깃값을 대입한 후 값을 바꿀 수 없다.
- 컴파일 타임 상수 변수 const는 컴파일 단계에서 상수가 되기 때문에 선언시 초기값을 너어주어야한다.
const String data1; // 오류
const String data2 = "hello";
class User{
static const String data3; //오류
static const String data4 = "hello2";
void some(){
const String data5; //오류
const String data6 = "hello3";
data2 = "world1" //오류
data4 = "world2" //오류
data6 = "world3" //오류
}
}
- 런타임 변수 final은 톱 레벨 뿐만 아니라 함수 내에서도 선언가능하며, const와 마찬가지로 값변경이 불가능한다. 대신 초깃값을 대입하는 시점인 선언할떄가 아니어도 된다.
final int no1;
class MyClass{
final int no2;
MyClass(this.no2);
void some(){
final no3;
no3 = 10;
no3 = 20; // 오류
}
}
- 상수 변수와 문자열 템플릿관련하여 아래 코드를 보고 이해하길 바란다
main(){
String s1 = "hello";
const String s2 = "world";
final String s3 = "hello_world";
String s4 = "$s1, $s2";
const String s5 = "$s2";
const String s6 = "$s1, $s2, $s3"; //오류 이경우 const로 선언하지 않은 값들이 들어와서 오류 발생
final String s7 = "$s1, $s2, $s3"; //fianl로 선언했을 경우 const는 괜찮다.
}
- var 은 타입을 유추해준다. 즉 변수를 선언할 때 타입을 생략가능하게 해준다. 이것이 가능한 이유는 컴파일러가 유추하여 타입을 결정하기 때문이다. 그래서 초기값을 대입하면 그 타입으로 결정이 된다.
var no = 10;
no = 20;
no = "hell"; // int로 타입이 결정되었는데 String을 대입하여 오류
- 다만 아래와 같이 초깃값을 대입하지 않을경우 dynamic 타입으로 선언되어 어느 값이든 들어 갈 수 있따.
var no;
no = 10;
no = "hello";
no = true;
- dynamic은 모든 타입을 지원한다.
dynamic no = 10;
no = "hello";
no = true;
- 컬랙션 타입에는 arry, list, set,map이 있다.
- list에서 filled()라는 함수가 있는데, 이는 리스트의 크기와 초기값을 정해준다. 크기가 정해졌기 때문에 추가하거나 삭제할 수 없다. 만일 추가하길 원한다면 growable 매개변수는 true해주어야한다.
var list = List<int>filled(3,0);
pirnt(list); // 0,0,0
var list2 = List<int>filled(3,0, growable: true);
list2.add(40);
print(list2); // 0,0,0,40
- list에서 generate() 함수를 사용하면 초기값을 지정하는 두번째 매개변수를 함수로 지정할 수 있다.
var list = List<int>.generate(3, (index) => index * 10 , growable: true);
print(list); // 0, 10, 20
반응형
'2023년 부터 > Flutter' 카테고리의 다른 글
Dart - 믹스인(mixin) (0) | 2023.10.19 |
---|---|
Dart - 클래스와 객체 (0) | 2023.10.19 |
Dart - 함수와 제어문 (2) | 2023.10.19 |
Dart - 널 안정성 (0) | 2023.10.19 |
Dart 언어란? (0) | 2023.10.19 |