Programming/Dart

Dart / Flutter 기본 문법 (변수)

나쵸캣 2023. 3. 1. 16:52
반응형

기본 변수

dart는 Type safe한 언어지만 타입 추론이 가능하여 명시적 타입을 지정하지 않아도 된다.

var year = '2023';
var friuts = ['apple', 'banana', 'cherry'];

print(year is String);		// true
print(friuts is Object);	// true

 

만약 타입이 예상되지 않는다고 명시적으로 표현할 때에는 dynamic 키워드를 사용한다. (Typescript의 any 같은 역할)

var year = '2023';
year = 100;
//Error: A value of type 'int' can't be assigned to a variable of type 'String'

dynamic year = '2023';
year = 100;
// Not Error

 

 

디폴트 값

nullable 타입을 가지는 변수는 초기값으로 null을 가질 수 있다.

하지만 non-nullable 변수를 사용한다면 무조건 초기화를 해야한다.

String? year;
print(year);	// null

String year;
print(year);
// Error: Non-nullable variable 'year' must be assigned before it can be used.

 

 

Late 변수

dart 2.12에 late 수식어가 추가되었다. 두 가지 사용예시가 있다.

  • 선언 이후에 초기화되는 non-nullable 변수를 선언하는 것
  • 변수의 초기화를 지연하는 것
String year;
print(year);
// Error: Non-nullable variable 'year' must be assigned before it can be used.

late String year;
print(year)
// Error: Late variable 'year' without initializer is definitely unassigned.

late String year;
year = "2023";
print(year);	// 2023

 

 

fianl, const

변수를 변경할 생각이 없다면 final, const를 지정한 타입에 추가하여 상수로 만들 수 있다.
final 변수는 오직 한 번만 설정 할 수 있다.

const 변수는 컴파일 타임 상수이다. (런타임과 컴파일타임이 있다.)

* 인스턴스 변수는 final로 설정될 수 있지만 const로 설정될 수는 없다.

  final year = "2023";
  final String month = "10";
  print(year);	// 2023
  print(month);	// 10
  
  final year = "2023";
  year = "2024";
  // Error: Can't assign to the final variable 'year'.
  
  const year = "2023";
  year = "2024";
  // Error: Can't assign to the final variable 'year'.


const 키워드는 상수 변수를 선언할 때 뿐아니라 상수 값을 만들 때에도 사용 가능하다.

  var ntnn = "1999";
  var year = [ntnn];
  print(year);	// [1999]
  
  var ntnn = "1999";
  var year = const [ntnn];
  // Error: Not a constant expression.
  
  var year = const [];
  // 이전에 const 값을 가지고 있더라도 non-final, non-const 변수의 값을 변경할 수 있다.
  year = ['2023'];
  print(year);	// [2023]

 

반응형