TIL

Dart문법1주차이자 4일차!!

kimw746 2024. 10. 30. 21:45

오늘은 함수형 프로그래밍과 Dart에 대해 배웠습니다!!

 

함수형 프로그래밍 (Functional Programming)

 - 함수의 연속으로 프로그램을 구성하는 방식

 어허 또 뭐죠 함수의 연속이라는 말은 뭔가요...

메서드 체이닝 (Method Chaining) 이라고 부르는 데 전 모르겠는데요?

 - 을 사용해서 여러 개의 함수를 하나로 연결하는 방식 이라 합니다.

예시코드로는?

int number = -12345
var result = number.abs().toString().contains('3');
print(result); // true

abs() 는 절댓값을 반환하는 함수, toString() 은 문자형으로 바꿔주는 함수입니다.

 

String word = 'abcd';
var index = word.toUpperCase().indexOf('B');
print(index); // 1

toUpperCase() 는 문자열의 모든 문자를 대문자로 바꾸는 함수 입니다.

 

그럼 이것밖에 있진 않을텐데 음~

두번쨰 ! 

 - 가변적인 데이터의 사용을 최소화하여 프로그램을 구성하는 방식

아니이 가변적인 데이터의 사용을 최소화한다는 것이 또 무슨 말인가요..

찾아보니 출력값이 항상 그 함수의 매개변수(입력값) 에만 의존하게 한다는 뜻 이라네요.

int add(int a, int b) {
  return a + b;
}

void main() {
  int result = add(3, 4);
  print(result); // 7
}

add() 의 코드 블록을 보면 함수의 결과값이 함수의 매개변수에만 의존하고 있죠?

함수 밖에 있는 변수를 함수 안에서 사용하지 않는군요.

 

이런 형태의 함수를 순수함수 라고 불러요.

순수함수가 뭘까요?

같은 입력값에 대해서 항상 같은 출력값이 나오는 함수 입니다.

int add(int a, int b) {
  return a + b;
}

a1 을, b2를 넣으면 항상 3 이 나오겠죠?

int multiply(int a, int b) {
  return a * b;
}

a3 을, b4 를 넣으면 항상 12 가 나오겠죠?

int getTotal(List<int> numbers) {
  int result = 0;
  for (var number in numbers) {
    result += number;
  }
  return result;
}

numbers[1, 2, 3, 4, 5] 를 넣으면 항상 15 가 나오겠죠.

 

이제 함수형 프로그래밍에 많이 사용하는 함수에는 무엇이 있는지 알아보죠!!

 - 형변환 함수 (Type Casting Function)   <- 특정 타입의 데이터를 다른 타입의 데이터로 변환하는 함수입니다.

더보기
더보기

1. toString()   - 값을 String 타입으로 변환한 값을 반환한다.

2.int.parse('')  - String 타입의 값을 int 타입으로 변환한 값을 반환함. , int 타입으로 바꿔줄 문자열을 매개변수에 전달

3. double.parse('') -  String 타입의 값을 double 타입으로 변환한 값을 반환해요.

4. toList()   -  특정 collection 타입의 값을 List 타입으로 변환한 값을 반환해요.

5. toSet()   -  특정 collection 타입의 값을 Set 타입으로 변환환 값을 반환해요.

6. asMap()  -  특정 collection 타입의 값을 Map 타입으로 변환한 값을 반환해요.

 - 고차 함수 (Higher-order Function)   <-   함수를 다루는 함수입니다.

collection 타입의 데이터에 있는 요소를 처리하거나 변환할때 사용한당

종류로는!!

1. map() - Collection 타입인 데이터의 각 요소에 특정 함수를 적용한 새로운 Collection 타입의 데이터를 반환해요.
 - map(([매개변수]) { return [매개변수에 적용할 동작] });


2. where() - Collection 타입의 데이터에 있는 각 요소들을 특정 조건에 넣었을 때 
참인 요소들만 필터링한 새로운 Collection 타입의 데이터를 반환해요.
 - where(([매개변수]) { return [조건식] });


3. firstWhere() - Collection 타입의 데이터에 있는 각 요소들을 특정 조건에 넣었을 때
참인 요소들 중 첫번째 요소를 반환해요.
 - firstWhere(([매개변수]) { return [조건식] });


4. lastWhere() - Collection 타입의 데이터에 있는 각 요소들을 특정 조건에 넣었을 때
참인 요소들 중 마지막 요소를 반환해요.
 - lastWhere(([매개변수]) { return [조건식] });


5. reduce() - Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합해요.
 - reduce(([매개변수1], [매개변수2]) { return [적용할 동작] });


6. fold() - Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합해요.
 - fold(초기값, ([매개변수1], [매개변수2]) { return [적용할 동작] });


7. any() - Collection 타입의 데이터에 있는 요소 중 하나라도 주어진 조건을 만족하면 true 를 반환해요.
 - any(([매개변수]) { return [조건식] });


8. every() - Collection 타입의 데이터에 있는 모든 요소가 주어진 조건을 만족하면 true 를 반환해요.
 - every(([매개변수]) { return [조건식] });


9. takeWhile() - Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당
 요소들을 반환하고, 조건이 처음으로 거짓이 되는 순간부터의 요소들은 모두 무시해요.
 - takeWhile(([매개변수]) { return [조건식] });


10. skipWhile() - Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당
 요소들을 건너뛰고, 조건이 처음으로 거짓이 되는 순간부터의 요소들을 모두 반환해요.
- takeWhile(([매개변수]) { return [조건식] });

 

 

'TIL' 카테고리의 다른 글

Dart 3주차 라이브러리를 이용해서 확장하기  (0) 2024.11.05
3주차..!  (0) 2024.11.04
Dart 프로그래밍 1주차 이자 2일차!  (2) 2024.10.29
Dart 문법 강의 1주차 입니다요!  (3) 2024.10.28
Flutter 앱 개발 4일차!  (0) 2024.10.24