본문 바로가기
Flutter

[Dart] dart 에서 쓰이는 variables

by 동동하다 2024. 9. 11.
반응형

dart 에서 변수를 선언하는 키워드는 var 를 사용한다.

var 는 특별한 타입이 없다. 다만 var 로 선언된 변수에 할당되는 변수의 타입으로

해당 변수의 타입을 유추한다.

var name = 'John';	// name 은 String 타입으로 선언된다.

 

만약 변수의 타입을 선언과 동시에 설정하고 싶다면 var 대신 해당 타입을 키워드로 사용한다.

String name = 'John';

 

Dart 의 기본 타입은 아래와 같다.

String name = 'John';
int age = 20;
double height = 175.5;
bool isMale = true;

 

당연한 이야기지만 한번 설정된 타입에 다른 타입의 값을 할당할 수 없다.

만약 타입이 가변적일 때는 Object 키워드를 사용한다.

String name = 'John';
name = 20;		// error 가 발생한다.

Object obj = 'This is Object type';
obj = 1000;		// 가능

 

Null safety

Dart 는 Null safety 를 강력하게 강제한다.

Null safety 란 런타임 환경에서 변수가 null 일 때 발생할 수 있는 예상치 못한 에러를

컴파일 단계에서 발견해준다.

이를 통해 런타임환경에서 발생할 수 있는 잠재적인 에러 가능성을 차단해서

시스템을 안정적이고 완성도 있게 만들 수 있다.

 

만약 꼭 null 을 사용해야 하는 경우가 있다면 타입 선언뒤에 ? 를 붙여주어

Nullable 타입으로 만들어 사용할 수 있다.

String name1 	// Non-nullable type. 변수에 값을 할당하지 않으면 에러가 발생한다.

String? name2	// Nullable type. 변수에 값을 할당하지 않으면 null 값이 세팅된다.

 

dart 언어에서는 변수 선언이후 사용전에 무조건 값이 세팅되어야 한다.

Nullable 한 변수의 경우 세팅되지 않는다면 default 값으로 Null 이란 값이 세팅되어진다.

하지만 Non-nullable 한 변수의 경우 아무 값이 세팅되지 않고, dart 는 이를 감지해서

개발자에게 알려준다.

 

그렇기 때문에 dart 에서는 선언과 동시에 Default 값을 세팅하는 것을 권고한다.

 

Late variables

변수 선언시 late 키워드를 사용해서 초기화를 지연시킬 수 있다.

변수 초기화를 지연시키는 것은 종종 유용할 때가 있습니다.

  • 변수가 당장에 필요하지 않지만, 변수 초기화 비용이 많이 들 때
  • 변수를 초기화 할 때 this 에 대한 접근이 필요할 때
// temperature를 사용하지 않는다면 불필요하게 readThermometer() 를 호출하지 않는다.
late String temperature = readThermometer();

 

Final and const

dart 에서 상수의 선언은 final 이나 const 를 사용한다.

final 과 const 의 차이점은 final 은 런타임시 선언된 값이 설정되며, const 의 경우 컴파일시 값이 저장됨

final name = 'John';
name = 'Alice';			// error 발생

final time1 = DateTime.now();		// 이 코드가 실행되는 순간 날짜 세팅
const time2 = DateTiem.now();		// 컴파일 시점의 날짜 세팅

 

const 의 경우 상수 값을 선언하는데 사용되기도 한다.

var fruits = const ['apple', 'banana'];
fruits = ['orange', 'melon'];				// fruits 라는 변수에 새로운 값이 세팅

final animals = const ['dog', 'cat'];
animals = ['cow', 'horse'];					// error 발생. animals 라는 상수에 다른 값을 세팅할 수 없다.
반응형