dart문법_함수형 프로그래밍
메서드 체이닝(함수의 연속)
: .을 이용해 연속으로 함수 사용
int number = -12345
var result = number.abs().toString().contains('3');
print(result); // true
많이 사용되는 함수
1. 형변환 함수
toString() : int → String으로 변환
int.parse() : String → int로 변환(변환 불가시 오류 발생)
int.tryParse() : String → int로 변환(변환 불가시 null 반환)
double.parse() : String → double로 변환(변환 불가시 오류 발생)
double.tryParse() : String → double로 변환(변환 불가시 null 반환)
toList() : 특정 Collection 타입의 값을 List 타입으로 변환(Map 변환 불가)
toSet() : 특정 Collection 타입의 값을 Set 타입으로 변환(Map 변환 불가, 중복 항목은 자동 삭제)
asMap() : 특정 Collection 타입의 값을 Map 타입으로 변환
(Set 변환불가_index값이 없어서. List에서 변환시 index가 키값이 됨)
2. 고차함수
map()
: Collection 타입인 데이터의 각 요소에 특정 함수를 적용한 새로운 Collection 타입의 데이터를 반환.
원본 데이터를 직접 가공하지 않고, 특정 함수를 적용한 새로운 데이터를 반환.
Collection의 Map과 다름.
map(([매개변수]) { return [매개변수에 적용할 동작] });
List<int> numbers = [1, 2, 3, 4, 5];
var doubledNumbers = numbers.map((n) {
return n * 2;
});
print(doubledNumbers); // (2, 4, 6, 8, 10)
where()
: Collection 타입의 데이터에 있는 각 요소들을 특정 조건에 넣었을 때 참인 요소들만 필터링한
새로운 Collection 타입의 데이터를 반환
참인 요소가 없을 경우 빈 값을 반
where(([매개변수]) { return [조건식] });
List<int> numbers = [1, 2, 3, 4, 5, 6];
var result = numbers.where((number) {
return number.isEven
});
print(result); // (2, 4, 6)
where(([매개변수]) => [조건식] );
List<int> numbers = [1, 2, 3, 4, 5, 6];
var result = numbers.where((n) => n.isEven);
print(result); // (2, 4, 6)
firstWhere() : 참인 요소들 중 첫번째 요소 반환
lastWhere() : 참인 요소들 중 마지막 요소 반환
reduce() : Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합
reduce(([매개변수1], [매개변수2]) { return [적용할 동작] });
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.reduce((a, b) {
return a + b;
});
fold() : Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합
fold(초기값, ([매개변수1], [매개변수2]) { return [적용할 동작] });
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.fold(0, (a, b) {
return a + b
});
any() : Collection 타입의 데이터에 있는 요소 중 하나라도 주어진 조건을 만족하면 true 를 반환
any(([매개변수]) { return [조건식] });
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.any((number) {
return number.isEven;
});
print(result); // true
every() : Collection 타입의 데이터에 있는 모든 요소가 주어진 조건을 만족하면 true 를 반환
takeWhile() : Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당 요소들을
반환하고, 조건이 처음으로 거짓이 되는 순간부터의 요소들은 모두 무시
takeWhile(([매개변수]) { return [조건식] });
List<int> numbers = [1, 2, 3, 4, 5, 6];
var result = numbers.takeWhile((number) {
return number < 4;
});
print(result); // (1, 2, 3)
skipWhile() : Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당 요소들을
건너뛰고, 조건이 처음으로 거짓이 되는 순간부터의 요소들을 모두 반환
List<int> numbers = [1, 2, 3, 4, 5, 6];
var result = numbers.skipWhile((number) {
return number < 4;
});
print(result); // (4, 5, 6)