알고리즘이나 이전에 했던 콘솔 쇼핑몰처럼 코드를 작성할 때 타입을 변경해야 하는 경우가 생각보다 많다.
예를 들어, 사용자의 입력 값을 가져오면 값이 1이지만 타입은 숫자가 아니라 문자로 인식하기 때문이다.
숫자를 숫자형으로 인식해야만 사용자의 입력 값으로 다른 로직을 수행하기가 편하다.
그래서 오늘은 타입을 변환해 주는 메서드에 대해 파헤쳐 보자.
toString()
- 값을 `String`타입으로 변환한 값을 반환
int number = 42;
var result = number.toString();
print(result); // '42'
print(result.runtimeType); // String
int.parse()
- 문자열을 `int`타입으로 변환한 값을 반환
- 문자일지라도 확실히 숫자일 경우에만 가능하다. 아닐 경우에는 error가 발생
String number = '123';
var result = int.parse(number);
print(result); // 123
print(result.runtimeType); // int
String invalidNumber = 'abcd';
var result = int.parse(invalidNumber);
print(result); // error
int.tryParse()
- `int.parse()`와 같은 기능을 하는 메서드.
- 다른 점은 숫자로 변환이 안 될 경우 error가 아닌 `null`을 반환한다.
double.parse()
- 문자열을 `double`타입으로 변환한 값을 반환
- 문자일지라도 확실히 숫자일 경우에만 가능하다. 아닐 경우에는 error가 발생
String number = '123.4';
var result = double.parse(number);
print(result); // 123.4
print(result.runtimeType); // double
String invalidNumber = 'abcd';
var result = double.parse(invalidNumber);
print(result); // error
double.tryParse()
- `double.parse()`와 같은 기능을 하는 메서드.
- 다른 점은 숫자로 변환이 안 될 경우 error가 아닌 `null`을 반환한다.
toList()
- 특정 `collection`타입이나 `iterable`한 타입의 값을 `List`타입으로 변환한 값을 반환
- `collection`은 `List`, `Map`, `Set`이다.
- `Map`은 `toList()`가 없으므로 사용할 수 없다.
// collection 예제
Set<String> fruitSet = {'사과', '오렌지', '수박'};
var fruitList = fruitSet.toList();
print(fruitList); // [사과, 오렌지, 수박]
print(fruitList.runtimeType); // List<String>
// iterable 예제
var ftuits = ['사과', '오렌지', '수박', '사과'];
var input = '사과';
var filteredList = ftuits.where((fruit) => fruit == input);
print(filteredList); // (사과, 사과), iterable 타입
print(filteredList.toList()); // [사과, 사과], List 타입
toSet()
- 특정 `collection`타입의 값을 `Set`타입으로 변환한 값을 반환
- `Set`은 중복값을 허용하지 않기 때문에 `collection` 값에 중복값이 있으면 중복값을 제외한 `Set`을 반환
List<String> fruitList = ['사과', '오렌지', '수박'];
var fruitSet = fruitList.toSet();
print(fruitSet); // {사과, 오렌지, 수박}
print(fruitSet.runtimeType); // Set<String>
Map<String, String> people = {'Alice': 'Student', 'Bob': 'Teacher'};
var peopleSet = people.toSet();
print(peopleSet);
// Error: The method 'toSet' isn't defined for the class 'Map<String, String>'.
List<String> fruitList = ['사과', '오렌지', '수박', '사과'];
var fruitSet = fruitList.toSet();
print(fruitSet); // {사과, 오렌지, 수박}, 중복 불가
asMap()
- 특정 `collection`타입의 값을 `Map`타입으로 변환한 값을 반환
List<String> fruitList = ['사과', '오렌지', '수박'];
var fruitMap = fruitList.asMap();
print(fruitMap); // {0: 사과, 1: 오렌지, 2: 수박}
Set<String> fruitSet = {'사과', '오렌지', '수박'};
var fruitMap = fruitSet.asMap();
print(fruitMap);
// Error: The method 'asMap' isn't defined for the class 'Set<String>'.
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL-010] Dart 실전 문법 파헤치기 - Future Class (1) | 2025.03.14 |
---|---|
[TIL-009] Dart 실전 문법 파헤치기 - Cascade 연산자 (0) | 2025.03.14 |
[TIL-007] Dart로 콘솔 쇼핑몰 만들기-2 (0) | 2025.03.11 |
[TIL-006] Dart로 콘솔 쇼핑몰 만들기-1 (0) | 2025.03.10 |
[TIL-005] Flutter 위젯 생명 주기(Widget Life Cycle) (0) | 2025.03.07 |