[Dart] variables

hana jeong·2023년 4월 26일
0

main

main 함수는 모든 dart 프로그램의 엔트리 포인트임 -> 중요
main 함수에서 내가 쓴 코드가 호출됨


void main() {
	print("cat");
}

자스나 타스 같은 다른 프로그래밍 언어는 formmatter가 자동으로 세미콜론을 달아주지만 dart는 그런 기능이 없음 그래서 꼭 세미콜론을 붙여야함(중요!!)

var keyword

// no.1
void main() {
   var name ="haha"; // 값을 업데이트 할 때 변수의 원래 타입과 일치해야함
   name = "하하";
}

// no.2
void main() {
   String name ="haha"; // 명시적으로 변수의 타입 지정
   name = "하하";
}

둘 다 변수를 생성하는 방법이다
각각의 방법은 어떨 때 사용될까?

첫 번째 방법은 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 var를 사용함

그리고 class에서 변구나 프로퍼티를 선언할 때는 두 번째 방법같이 타입을 지정함

Dynamic type

다이나믹은 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드임
그러면 다이나믹은 왜 사용하는 걸까?
-> 변수가 어떤 타입인지 알기 어려운 경우들이 종종 있기 때문

void main() {
   Dynamic name;
   name = "하하";
   name = 123;
   name = false;
}

다이나믹은 정말 필요할 때만 사용하자

nullable variables

null safty는 개발자가 null을 참조할 수 없도록 하는 것임
왜냐면 null을 참조하면 런타임 에러가 생기기 때문

null safty는 어떤 변수 혹은 어떤 데이터가 null이 될 수 있음을 명시하는 역할을 함

void main () {
	String haha = 'haha';
    haha = null;
    if(haha != null) {
    	haha.isNotEmpty
    }
}

haha라는 변수가 문자열이나 null 둘다 될 수 있게 하려면 ?를 붙임

void main () {
	String? haha = 'haha';
    haha = null;
    if(haha != null) {
    	haha.isNotEmpty
    }
}

이렇게 하면 dart에서 haha라는 변수가 null이 될 수 있다는 걸 알 수 있음

void main () {
	String? haha = 'haha';
    haha = null;
    haha?.isNotEmpty
}

변수 haha가 null이 아니라면 isNotEmpty속성을 달라는 뜻임
if문을 짧게 단축해서 작성함

final variables

한 번 정의된 변수를 수정할 수 없게 만들려면 final을 사용함
자바스크립트의 const와 비슷...

// final 사용 전
void main () {
	String name = "haha";
    name = "hoho";
}


// final 사용 후
void main () {
	final name = "haha";
    name = "hoho" // Error!!!!!
}

final을 사용해서 만든 변수는 수정할 수 없음

Late variables

late는 초기 데이터 없이 변수를 선언할 수 있게 해줌

void main () {
	late final String name;
    // api로 데이터를 받아서 변수에 값을 할당함
    name = "haha";
}

late를 사용해 변수를 먼저 만든 후 그 안의 값(데이터 등)은 나중에 받아서 할당할 수 있는 것이다(하지만 원래 정의한 타입에 맞는 값이 들어가야함)

주로 API를 사용해 작업할 때 많이 사용하게 될듯

constant variables

다트에도 const 키워드가 있다 두둥
하지만 자바스크립트의 const와는 다르다
(자바스크립트의 const는 dart의 final과 비슷함)

dart의 const는 compile-time constant를 만들어줌
즉, const는 컴파일 할 때 값을 알 수 있는 변수를 만드는 것임
(코드를 컴파일하기 전에 알고 있어야 함)

void main () {
	const API = fetchApi();
}

const는 컴파일 시간에 알려진 상수를 선언하는 데 사용되고, final은 런타임에 알려진 상수를 선언하는 데 사용할 수 있음

const pi = 3.14; // 컴파일 시간 상수
final currentTime = DateTime.now(); // 런타임 상수

다트 재밌다...

profile
https://developer-hh.tistory.com 로 옮깁니다

0개의 댓글