타입추론 (var / dynamic)

ssh·2023년 12월 4일
0

dart

목록 보기
4/22
  • 다트는 타입을 직접 명시하지 않고 var로 대체할 수 있는 타입 추론을 지원
    • 코드
      var i = 100;//int 타입
      var d = 100.1;//double 타입
      var s = 'hello';//문자열 타입
      var s2 = "hello";//문자열 타입
      var b = true;//불리언 타입
      var b2 = i < 10;//불리언 타입
      var b3 = s.isEmpty;//불리언 타입

타입 애노테이션과 타입 추론

  • 타입 애노테이션(annotation): 변수 선언에 명시한 타입으로 결정한다.
  • 타입 추론(inference): 변수에 대입되는 값을 통해서 묵시적으로 변수의 타입을 결정한다.
  • 다트 언어는 타입 추론 방식을 권장한다.
    • 코드
      // BAD: 타입 애노테이션
      int number = 10;
      // GOOD: 타입 추론
      var number = 10;
      
  • 타입 추론 방식은 프로그래머가 직접 타입을 명시하지 않기 때문에 다른 인터프리터 언어처럼 형변환이 자유로울 것 같지만 그렇지 않다.
  • 타입 추론 방식은 값을 대입해서 타입을 결정하는 방식이기 때문에 변수의 초기화를 강제화하고 형을 결정 짓는 효과가 있다.
  • 변수를 초기화할 수 없는 상황이라면 null 값을 가질 수 있는 변수임을 명시해야 해야 한다. - (Null 안전성, Null safety)

방법

  • var
    • 타입추론을 사용할때는 var키워드 사용한다.
    • 컴파일 타임에 타입이 결정된다.
  • dynamic
    • 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드이다.
    • 특별한 경우가 아니라면 사용하지 않는다.
    • 해당 변수의 타입을 컴파일 타임에 알 수 없을 때 주로 사용한다.
      • ex) json
    • 컴파일 타임에 타입이 결정되지 않고 런타임에 타입이 결정된다.
    • 다양한 타입을 가질 수 있기 때문에 정말 필요할 때만 사용해야 한다. (위험 방지)
    • 만약 변수를 선언할 때 아무런 값을 지정하지 않거나, 타입을 선언하지 않으면 자동적으로 dynamic 타입을 가진다.
      • 코드
        void main() {
        var i = 10; // int
        var d = 19.2; // double
        var str = 'hello'; // String
        
        dynamic a = 10;
        dynamic b = 10.0;
        // 특별한 경우가 아니라면 사용하지 않는다
        // 컴파일 타임에 타입이 결정되지 않고 런타임에 타입이 결정
        }

0개의 댓글

관련 채용 정보