-
[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로 변수의 타입을 정확하게 알려주어 에러도 방지하고 자동완성도 가능하게 할 수 있다
'Flutter' 카테고리의 다른 글
[Dart] extends와 implements의 차이?? (2) 2023.11.02 [Dart] Dart에서의 static, const와의 차이점? (0) 2023.11.01 [Flutter] FocusNode 활용 (0) 2023.10.30 Flutter 생명 주기 (0) 2023.10.23 [Flutter] Text 위젯의 overflow 속성 - 글자 수가 길어 넘어갔을 때 (0) 2023.10.19