[Dart] Variables(변수)

AI·2023년 10월 31일
void main(){
	print('hello world');
}

main - dart프로그램의 entry point
일부러 세미콜론(;)을 안쓰는 경우도 있기에 실행을 원하면 쓰기


변수 만드는 법 : var(자동화), 명시적으로 변수 타입 지정

void main(){
/*var*/
	var name = '다트';
    //type이 다르기에 안 됨
    name =1;
    name = bool;
    name = false;
    //type일치
    name = 'dart';
/*type지정*/
	String aName ='다트';
}

var : 함수나 메소드 내부에 지역변수를 선언할때 사용
타입 지정 : class내 변수, property 선언할 때 사용


dynamic : 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드
타입 지정

void main(){
	var name; //==dynamic name;
    name = 'dart';
    name = 12;
    name = true;
    if(name is String){
    //dynamic이 String임을 앎 -> 관련 옵션 사용가능
    }
}

dynamic이 필요한 이유 : 변수가 어떤 타입일지 알기 어려운 경우, dynamic으로 살짝 돌아가는게 유용한 경우
쓰는 것을 피하고 정말 필요할때만 사용


null safety : 개발자가 null값을 참조할 수 없도록 하는 것 -> null이 될 수 있음을 정확히 표시해줘야함
변수나 데이터가 null이 될 수 있음을 명시하는 것

void main(){
	String dart = 'dart';
    dart = null; //불가능
}

null, string 둘 다 사용하려면 ?를 사용하면 된다.

void main(){
	String? dart = 'dart';
    dart = null; //가능
    dart.length;//null인지 확인 필요
}

수정 버전

void main(){
	String? dart = 'dart';
    dart = null; //가능
    if(dart != null){
    	dart.isNoEmpty;
    }
    //or
    dart?.isNoEmpty;
}

수정 불가능한 데이터 타입으로 만드는 법 : final

void main(){
	final name = 'dart';
    name = 'dart';//수정 불가, 자바스크립트에서 const개념
}

구체적으로 해주고 싶다면 타입 추가하기

void main(){
	final String name = 'dart';
}

하지만, 필수는 아님


late : final이나 var 앞에 붙여줄 수 있는 수식어
초기 데이터 없이 변수를 선언할 수 있게 해줌

void main(){
	late final String name;
    //do someting, go to api
    print(name);//실수를 줄여줌, 값을 넣기 전에는 접근 불가
    name = 'dart';//api에서 데이터를 받아 나중에 변수에 넣기
    print(name);//값이 있기에 작동
}

flutter로 data fetching을 할 때 유용


const : 상수, compile-time constant

void main(){
	const name ='dart';
    name = '12';//final과 똑같이 작동=수정x, compile-time에 알고 있는 값
}
void main(){
	const API = '121212';//컴파일 될 때 그 값을 앎
    const api = fetchApi();
    //컴파일러는 api변수 값을 모름 -> const가 아닌 final사용
}

즉, const는 컴파일 할 때 알고 있는 값에 사용
ex. 앱스토어에 앱을 올리기 전에 알고 있는 값

어떤 값인지 모르고, 값이 api로 부터 오거나, 사용자가 입력해야 하는 값이면 final이나 var

0개의 댓글