반응형
DartPad
dartpad.dev
다트도 마찬가지로 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
메타코딩 : 네이버 카페
코린이들의 궁금증
cafe.naver.com
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
메타코딩
문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com
www.youtube.com
반응형