ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Dart] "toString"과 "as String" 차이?
    Flutter 2023. 10. 31. 13:10

    "toString"과 "as String"은 애초에 전혀 비슷하지도 않은 다른 문법이다.

     

    그냥 to랑 as 가 있어서 처음 보는 사람은 헷갈릴 여지가 있는 것 뿐.

     

    toString

    toString은 타입을 변환시켜주는 것이다.

    int a = 4;
    
    a.toString();

    하면 a가 String으로 변환돼어서 '4'가 되는 것

    String을 다시 int로 변환시켜주고 싶다면

    int.parse(a);

     

    as String

    이건 그냥 as 뒤에 String이 붙은 것 뿐이다.

    String 뒤에 다른 어떤 class나 타입이 들어가도 상관없다.

    그래서 dart에게 이건 String 타입이라고 알려주는 것 뿐

    String a = '4';
    
    final b = a as String;

    이렇게 하면 a가 String이 아니면 에러가 난다.

    'as String'd은 a는 무조건 String이라고 dart에게 알려주는 것이기 때문.

    근데 왜 이렇게 굳이 쓰는 것인가? 어차피 a는 String인거 다 아는데

    as 뒤에 String이 아니라 다른 class가 들어갔다고 생각해보면 된다.

    abstract class Animal {}
    
    class Person extends Animal{
    	final int? age;
        final String? sex;
        
        a({this.age, this.sex});
    }
    
    Person p1 = Person(age: 32, sex: 'male');
    
    final p2 = p1 as Person;
    
    p2.age = 31;
    p2.sex = 'female';

    Animal이라는 추상클래스를 상속 받은 Person class가 있다고 가정해보자

    이 Person 클래스는 생성자로 age와 sex를 받는다.

    p1이라는 인스턴스틑 생성후,

    이때 b라는 변수를 만들어 p1을 대입할 때, Dart에게 Person이라고 알려주어야지만

    p2하고 .을 쳤을 때 Dart가 p2를 Person으로 인지하고 자동완성으로 age와 sex가 나오게 된다.

    이렇든 Dart에게 as로 변수의 타입을 정확하게 알려주어 에러도 방지하고 자동완성도 가능하게 할 수 있다

Designed by Tistory.