본문 바로가기



Dart 12. { const, final }와 { var, dynamic } 타입 {유목민 알폰스}



const final var dynamic 타입의 변수들을 알아보겠습니다.

1. const 타입

  • { 함수 안의 지역변수, 톱 레벨 }에서 선언가능합니다.
  • 클래스에서 선언할 때는 무조건 static변수로 선언해야 합니다.  
  • 선언할 때 무조건 초기값을 지정해야 합니다.
  • 한번 선언이 되면 값을 바꿀 수 없습니다.
  • const타입에 변수값을 대입할 때는 반드시 ( const =  const ) 같은 const끼리만 대입가능합니다.
main() {
  String str01 = "문자값";
  const String const01 = "커스트고정값";
  final String final01 = "파이널고정값";
}

2. final 타입

  • {함수안의 지역변수, 클래스 안의 지역변수}에서 선언이 가능합니다.
  • 클래스에서 선언할 때도 static변수로 선언하지 않아도 자유롭게 선언할 수 있습니다.
  • 선언할 때 무조건 초기값을 지정하지 않아도 됩니다. 객체를 생성하는 시점에 초기값을 넣어도 됩니다.
  • 한번 값이 들어가면 변경할 수 없습니다.
  • const타입과 달리 final은 보편적으로 담을 수 있는 형태이면 다른 타입의 변숫값도 대입이 가능합니다.

 

3. var 타입

Dart에서는 int, double, bool 등 타입을 명시하지 않아도 var나 dynamic를 사용하여 포괄적으로 변수 선언을 할 수 있습니다. 그래서 var, dynamic는 변수의 정확한 타입을 알 수 없거나 포괄적으로 뭔가를 처리하는 로직을 작성할 때 유용하게 쓰입니다.

  • var타입은 초기에 대입한 값이 그 변수의 타입이 된다. 그래서 이후에는 초기에 정해진 타입으로 사용해야한다.
  • var타입에서 초기에 값을 정하지 않았다면 그 변수는 어떤 타입이라도 대입할 수 있다.

초기에 77을 대입했기 때문에 var01의 타입은 숫자타입으로 정해졌습니다. 하지만 하단에서 문자값을 넣으려고 했기 때문에 에러가 났습니다.

하지만

초기에 타입을 설정하지 않았다면 var01 변수는 다른 타입도 혼용해서 대입이 가능합니다.

 

4. dynamic 타입

 

다이내믹 타입의 속성은 초기값을 할당하지 않은 var타입과 동일한 성질을 가지고 있습니다.

그래서 변숫값을 항상 혼용해서 사용할 수 있습니다.

 

 

 

By. 유목민 알폰스 - Alphonse Elric