Christmas Pikachu var 와 dynamic
개발일지/Dart

var 와 dynamic

ZI_CO 2022. 11. 4.

var 와 dynamic 차이점


void main() {
  // name : 명시적 초기화, friend : 타입추론 초기화
  String name = "홍길동"; // 명시적타입 String
  var friend = "훈지"; // 타입추론 String

  friend = "123"; //  타입추론과 같은 String값이 들어 올 수 있다.
  friend = 123; // 타입추론이 String으로 초기화 되어 int값은 들어 올 수 없다.(에러 발생)

  dynamic friend1 = "훈지1"; // dynamic을 사용하여 타입추론이 String인걸 알 수 있다.
  friend1 = 123; // dynamic은 타입추론이 String로 되어있어도 int처럼 다른 데이터 타입이 올 수 있다.


}

 

1번

변수 name은 String으로 타입을 명시해주었지만 변수 friend 같은 경우, 타입을 var로 지정하여 타입 추론을 하게 했다. 

여기서 주의 할점!! var타입으로 변수를 선언할 때 초기값을 참조하여 해당 변수의 타입을 추론하기 때문에 한번 var로 선언한 변수는 다른 타입의 갑으로 넣어서는 안 된다는 것이다.

 

2번

1번 코드 처럼 var타입으로 선언한 변수 friend는 초기값을 String으로 추론되었기 때문에 그 후 int 타입의 값을 넣으려고 하면 컴파일 에러가 나오게 되는 것을 확인할 수 있다. 그런데 Dart에는 타입 변경이 가능한 dynamic 타입도 있다.

dynamic 같은 경우도 var와 같이 타입 추론이 가능하면서 타입 변경도 가능하다.또한 매개변수에서도 dynamic을 지원하기 때문에 타입을 명시할 필요 없다.

 

3번

3번 코드를 게되면 dynamic 타입으로 선언한 변수 friend의 초기값이 String 타입으로 추론되었지만 후에 friend에 int 타입의 값을 넣어 타입 변경 한 것을 확인할 수 있다.

 

 

'개발일지 > Dart' 카테고리의 다른 글

const와 final의 차이  (0) 2022.11.06
Dart에서 형 변환 하기  (0) 2022.11.04
명시적 타입, 타입추론, 데이터 타입 확인  (0) 2022.11.04
연산(산술, 부호, 논리)  (0) 2022.11.04
Dart란  (0) 2022.11.03

댓글