[Dart] #1 Variables

ZenTechie·2023년 8월 17일
0

Dart

목록 보기
1/4
post-thumbnail

main 함수

Dart에서 코드를 실행시키려면, 해당 코드가 main 함수 안에서 작성되어야 한다.

main 함수가 Dart의 시작 포인트인 셈이다.

void main() {
	print('Hello World!');
}

또한, 여기서 중요한 것은 항상 세미콜론(;)을 붙여야 한다는 점이다.

변수를 만드는 2가지 방법

  • var 키워드
    • 이때는 변수의 타입이 자동적으로 추론된다.
  • 명시적 타입
    • String같이 명시적으로 타입을 지정해준다.
void main() {
	var name1 = 'John'; // 방법 1
    String name2 = 'Alley'; // 방법 2
}

언제 무엇을 사용하는걸까?

  1. 함수나 메소드 내부에 지역 변수의 선언은 var을 사용한다.
  2. class에서 변수나 property를 선언할 땐 명시적 타입을 지정한다.

변수를 업데이트 할 때는, 같은 타입으로 업데이트해야 한다.
예를 들어, name1은 String 타입이므로 1, false 같은 값이 들어갈 수 없다.

Dynamic 타입

여러가지 타입을 가질 수 있는 변수에 사용하는 키워드이다.

왜 Dynamic이 필요한가?

변수가 어떤 타입인지 알기 어려운 경우가 존재하기 때문이다.

어떻게 사용하나?

명시적으로 dynamic 키워드를 붙이거나, 값을 할당하지 않으면 된다.

void main() {
  dynamic name1;
  var name2;
}

Null Safety

Null Safety란, 개발자가 null 값을 참조할 수 없도록 하는 것을 의미한다.

Null Safety가 없는 코드

bool isEmpty(String string) => string.length == 0;

main() {
  isEmpty(null);
}

위의 코드는 nullisEmptystring으로 보내고 stringlength 속성에 접근한다. 하지만, stringnull이고 nulllength 속성을 가지고 있지 않기 때문에 에러가 발생한다.

위와 같은 상황 때문에 Null Safety가 필요하다.
그렇다면, null이 될 수도 있다고 알려주고 싶다면 어떻게 할까?

변수의 타입 뒤에 ?를 붙인다.

void main() {
	String? name = 'Hi';
    name = null;
    if (name != null) { ... } 
    else { ... }
}

?을 사용했을 때 유의해야 하는 것은, 항상 null인지 아닌지를 체크해야 한다는 것이다.

기본적으로 모든 변수는 non-nullable 상태이다.

final 키워드

final로 선언한 변수는 나중에 수정을 할 수 없다.

void main() {
	final name = '홍길동';
    name = '춘자'; // Error!! Can't Modified!

late 키워드

latefinal이나 var 앞에 붙일 수 있는 수식어이다.
late는 초기 데이터 없이 변수를 선언할 수 있게 해준다.

+) late로 선언된 변수는 값을 추가하기 전까지는 사용할 수가 없다.

어떨 때 사용할까?

API에서 데이터를 받아올 때 사용할 수 있다.
처음에는 값이 없지만, 데이터가 받아와졌을 때 초기화를 해야하는 경우에 late를 사용하면 유용할 수 있다.

const 키워드

constfinal 키워드와 동일한 역할을 수행하지만, compile-time constant를 만들어준다.

const로 선언한 변수는 컴파일 할 때 알고 있는 값으로 초기화해야 한다.

e.g. API 요청 시 사용하는 API KEY

finalconst는 동일한 역할을 하지만 다른점이 있다.

final : 런타임 중에 만들어질 수 있는 변수
const : 컴파일 할 때 값을 알고 있는 변수

profile
데브코스 진행 중.. ~ 2024.03

0개의 댓글