## 해당 글은 강의를 들으면서 알고있던것을 적는게 아닌, 모르고 있던것을 알았을때 적어 놓은것임
< 함수형 프로그래밍 >
함수의 연속으로 프로그램을 구성하는 방식 (메서드 체이닝)
int number = -12345
var result = number.abs().toString().contains('3');
print(result); // true
- 가변적인 데이터의 사용을 최소화하여 프로그램을 구성하는것이 좋다!
// 출력값이 항상 매개변수 (입력값) 에만 의존하게 하는게 좋다.
int multiply(int a, int b) {
return a * b;
}
// 만일 함수 내부에서 값을 변경하는 명령형 프로그래밍 방식
int number = 0;
void increaseNumber() {
number += 1;
}
void main() {
print(number); // 0
increaseNumber();
print(number); // 1
}
형변환 함수 (Type Casting Function)
- toString
// 값을 String 타입으로 변환한 값을 반환
int a = 41;
var a1 = a.toString();
print(a1); // 41
print(a1.runtimeType); // String
- parse / tryParse
// String 타입의 값을 해당 타입으로 변환한 값을 반환
// 다만 parse의 경우 형변환이 실패하면 오류가 발생한다.
String number = '123';
var result = int.parse(number);
print(result); // 123
print(result.runtimeType); // int
// tryParse의 경우 형변환이 실패하면 null 을 반환한다.
String invalidNumber = 'abcd';
var result = int.tryParse(invalidNumber);
print(result); // null
// 변환할 수 있는 타입들은 여러가지가 있다.
int.parse
double.parse
bool.parse
DateTime.parse
Duration.parse
// 등등..
- toList, toSet
// 특정 컬렉션 타입에 값을 List,Set 형태로 바꾸어 변환
// 컬렉션 타입은 List,Set,Map,Iterable 등등이 있다.
// Map은 컬렉션 타입 중에서도 특별한 형태이기 때문에, 해당 형변환들을 적용하지 못함에 주의!
Iterable<String> fruitIter = {'사과', '오렌지', '수박'};
var fruitList = fruitIter.toList();
print(fruitList); // [사과, 오렌지, 수박]
print(fruitList.runtimeType); // List<String>
var fruitSet = fruitList.toSet();
print(fruitSet); // {사과, 오렌지, 수박}
print(fruitSet.runtimeType); // Set<String>
- asMap
// 특정 컬렉션 타입의 값을 Map 형태로 변환하여 반환
// List를 Map으로 형변환 시킬 경우, index값을 key로, list 값을 value 로 하는 Map이 반환된다.
List<String> fruitList = ['사과', '오렌지', '수박'];
var fruitMap = fruitList.asMap();
print(fruitMap); // {0: 사과, 1: 오렌지, 2: 수박}
// Set의 경우에는 asMap을 적용할 수 없다.
// Set을 Map으로 만드려면, toList를 통해 List 형태로 형변환 한 후, asMap으로 형변환 해주면 된다.
Set<String> fruitSet = {'사과', '오렌지', '수박'};
var fruitList = fruitSet.toList();
var fruitMap = fruitList.asMap();
print(fruitMap); // {0: 사과, 1: 오렌지, 2: 수박}
'Dart 문법' 카테고리의 다른 글
Dart 문법(6) (0) | 2024.11.04 |
---|---|
Dart 문법(5) (0) | 2024.11.01 |
Dart 문법(4) (0) | 2024.10.28 |
Dart 문법(2) (0) | 2024.10.28 |
Dart 문법 (1) (0) | 2024.10.25 |