일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C
- Python
- Kotlin
- kodility
- dart
- 프로그래머스
- Android P
- Rxjava2
- 알고리즘
- 안드로이드 구글맵
- NDK
- FLUTTER
- android push
- android architecture component
- Django REST
- C++
- UWP
- Django REST Android
- flutter firestore
- 코틀린
- Android
- Java
- Flutter TextField
- C/C++
- RxAndroid
- 안드로이드
- mfc
- Django REST framework
- RxJava
- livedata
- Today
- Total
개발하는 두더지
Flutter - Dart를 함수형 프로그래밍처럼 동작시키기 본문
dartpad - dart 코드를 실행시켜볼 수 있는 콘솔
Dart를 함수형 프로그래밍처럼 동작시키기
함수형 프로그래밍에서 할 수 있는 것들은
- 함수를 파라미터로 전달
- 변수에 함수를 저장
- 상수 값으로 사용할 수 있는 익명 함수 만들기 (lambda)
dart는 이러한 함수형 프로그래밍의 기능을 제공합니다. 즉 함수를 변수의 값에 할당할 수 있고, 다른 함수에 파라미터로 전달할 수 있습니다. 또한 클래스의 인스턴스를 함수처럼 call할 수도 있습니다.
String scream(int length) => "A${'a' * length}h!";
main() {
final values = [1, 2, 3, 5, 10, 50];
for (var length in values) {
print(scream(length));
}
}
위 코드의 결과 값은 아래와 같습니다.
Aah!
Aaah!
Aaaah!
Aaaaaah!
Aaaaaaaaaaah!
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah!
A${'a' * length}h!
처럼 ${} 표현식안에 계산하는 수식도 넣을 수 있습니다.
for문 대신에 values.map(scream).forEach(print);
를 넣어서 실행 가능합니다.map
은 리스트의 값을 하나씩 받아서 scream 함수를 통해 String 값으로 처리하고 다시 리스트에 담아줍니다forEach
는 scream 함수를 통해 리스트에 저장된 새로운 String 값을 print 해줍니다.
dart:collection
에는 fold
where
join
skip
과 같은 기능도 제공합니다.
RxJava를 해보셨으면 이해가 되는 코드입니다.skip
은 첫번째 값을 무시take
는 3개의 값만 가져옴
String scream(int length) => "A${'a' * length}h!";
main() {
final values = [1, 2, 3, 5, 10, 50];
values.map(scream).forEach(print);
print('---------------');
values.skip(1).take(3).map(scream).forEach(print);
}
결과물은 아래와 같습니다.
Aah!
Aaah!
Aaaah!
Aaaaaah!
Aaaaaaaaaaah!
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah!
Aaah!
Aaaah!
Aaaaaah!
'Flutter' 카테고리의 다른 글
Flutter - 무한 스크롤링 리스트뷰 만들기 (0) | 2019.04.21 |
---|---|
Flutter - StatefulWidget 이란? (1) | 2019.04.21 |
Flutter - Dart로 추상클래스 만들기 (0) | 2019.04.20 |
Flutter - dart로 클래스 생성자 파라미터를 optional 하게 만들어보기 (0) | 2019.04.20 |
Flutter - Dart로 클래스 만들어보기 (0) | 2019.04.20 |