본문 바로가기
개발해보겡/Flutter

Dart dynamic & var 차이

by 개발자욱 2022. 12. 31.
728x90
반응형

Dart에는 

String, int, double 등의 타입도 있지만

dynamic과 var 타입도 있습니다.

이러한 타입들이 어떤 경우에 사용되고 어떤 특징이 있는지 보겠습니다.

var의 경우

관습적으로 함수나 메소드 내부에서 지역 변수를 선언할 때 사용하며

String, int 등의 경우

class에서 변수나 property를 명시적으로 나타내는데 사용합니다.

var로 선언된 변수의 특징을 보겠습니다.

void main() {
	// 선언과 동시에 초기화
      var name = 'name'; // String으로 선언됨
      name = 1; // 에러
      name = false; // 에러 
      name = 'good';

      // 선언 후 초기화
      var name; // 다이나믹으로 선언됨
      name = 'name'; // 정상
      name = 12;	// 정상
      name = true;	// 정상
}

var로 선언과 동시에 초기화한 경우

초기화되는 값에 따라 타입이 결정되며 

이후에는 동일한 타입으로만 값을 변경할 수 있습니다.

한편,  var로 선언 후에 초기화한 경우

var는 dynamic으로 선언되어 

초기 타입과 다른 타입의 값으로 변경이 가능합니다. 

dynamic은 지금 당장 타입을 알 수 없는 경우에 사용합니다.

void main() {
  var name; // 다이나믹으로 선언됨

  // 타입을 아직 알 수 없어 제한된 메소드 사용
  name.toString();
  name.hashCode;

  // 타입이 정해지면 타입에 대한 메소드를 사용함

  if (name is String) {
    name.isNotEmpty;
    name.length;
  }

  if (name is int) {
    name.isEven;
    name.isOdd;
  }
}

dynamic으로 선언된 변수는 

타입이 지정되기 전까지 제한된 메소드를 사용합니다.

dynamic 변수의 타입이 정해지면

타입에 따라 메소드를 사용할 수 있게 됩니다.

반응형