반응형
온라인 편집기 주소 : https://dartpad.dev
기본 형태
void main() {
print('hello world');
}
Dynamic type : 타입이 정해지지 않은 변수 선언 및 사용
void main() {
var name; // or dynamic name; 으로 선언도 가능
name = 'string';
name = 12;
name = true;
if(name is String) {
// 문자열일 때
} else if(name is int) {
// int형 숫자일 때 처리 등
}
}
null safety : 변수 등에 null의 허용에 대한 식별자를 기재하여 사전에 npe를 차단
// null safety 하지 않은 코드
bool isEmpty(String string) => string.length == 0;
void main() {
isEmpty(null); // 에러 발생
}
// null safety
bool isEmpty(String string) => string.length == 0;
void main() {
// 문자열 온리 가능 변수
String name = 'name';
name = null; // 에러남. name은 문자열이어야함
// 둘 다 되려면
String? name2 = 'name';
name2 = null; // name2는 null일수도 있음
// nullable variable을 null이 아닐 때만 사용하고 싶으면
if(name2 != null) {
name2.isNotEmpty;
}
// 위 구문에 대한 단축문법
name2?.isNotEmpty;
}
final 변수 속성 : 수정 불가 속성 부여
void main() {
final name = 'name';
name = 'adfsdf'; // 에러남. 수정불가속성변수
// 타입 명시
final String name2 = 'name2';
}
late 속성 : 변수값 할당을 나중에 함(api 응답 객체를 담는 등의 상황에서 유용)
void main() {
late final name; // 변수 선언을 나중에 함
// api 호출 후 등 후에 값을 나중에 넣음
name = 'response name';
name = 'dddd'; // final 속성이기 때문에 에러 발생
// 응용. 값이 할당되기 전에 사용하면 컴파일 에러 발생시켜 오류 방지
late final name2;
print('name2); // 에러 발생. 값이 분명하지 않음!
}
const : 컴파일 타임에 알고 있어야 하는 수정 불가 속성
void main() {
// 수정불가지만 final과 다르게 compile time에 알고 있어야 하는 값
const name = 'name';
name = 'safe'; // 에러. 수정불가
const name2;
// api call
name2 = 'enfie'; // 에러. const는 컴파일 타임에 알고 있어야 함
}
반응형
댓글