반응형
다트도 마찬가지로 main이 먼저 실행된다.
int n1 = 1;
double d1 = 10.1;
bool b1 = true;
String s1 = "홍길동";
void main() {
print("정수 : ${n1}");
print("실수 : ${d1}");
print("불리언 : ${b1}");
print("문자 : ${s1}");
}
// var 타입추론 : 값이 들어올 때 결정되는 타입
var n1 = 1;
var d1 = 10.1;
var b1 = true;
var s1 = "홍길동";
void main() {
print("정수 : ${n1}");
print("실수 : ${d1}");
print("불리언 : ${b1}");
print("문자 : ${s1}");
print("타입 : ${n1.runtimeType}");
// 타입 추론의 단점 : var은 타입이 결정되면 타입 변경 불가능 (묵시적 형변환 불가능)
n1 = 2;
print("정수 : ${n1}");
n1 = 3.0;
}
dynamic은 오브젝트 타입, 타입 변경 가능
var은 오브젝트 타입이지만 타입 변경 불가능
보통 통신은 dynamic으로 받고 클래스로 변경
// var 타입추론 : 값이 들어올 때 결정되는 타입
var n1 = 1;
var d1 = 10.1;
var b1 = true;
var s1 = "홍길동";
dynamic dy1 = 50; // Object 타입
void main() {
print("정수 : ${n1}");
print("실수 : ${d1}");
print("불리언 : ${b1}");
print("문자 : ${s1}");
print("타입 : ${n1.runtimeType}");
// 타입 추론의 단점 : var은 타입이 결정되면 타입 변경 불가능 (묵시적 형변환 불가능)
n1 = 2;
print("정수 : ${n1}");
// n1 = 3.0;
print(dy1);
print(dy1.runtimeType);
dy1 = "홍길동";
print(dy1);
print(dy1.runtimeType);
}
변수를 선언하고 초기화를 안해주면 출력 자체를 안해준다.
null 자체도 데이터이기 때문에 null을 넣어보자.
오류가 난다.
dart의 모든 타입은 null을 받지 못한다!!
그렇기 때문에 타입에 ?를 붙인다.
자바의 Optional과 같다.
Optional<String> hello = null
String? hello = null
동일하다
void main() {
// null 대체 연산자
String? hello = null;
print(hello);
}
값이 있으면 그대로 뿌리고 없으면 ?? 로 지정해줄수있다. isPresent와 동일하다.
void main() {
// null 대체 연산자
String? hello = null;
print(hello ?? "홍길동");
}
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
반응형