플러터 공부 Day 2: OOP
[분류 전체보기] - 플러터 공부 시작 Day 1 플러터 공부 시작 Day 1 안녕하세요 제가 이번에 시작하는 것은 제가 여러 번 도전했다가 실패했던 모바일 앱 개발 공부입니다. 이 글에서는 온라인 강의
jastory.tistory.com
Day3. 오늘은 다트언어의 functional programming(함수형 프로그래밍) 을 공부했습니다.
List, Map, Set
list to map,set: listName.asMap(); / listName.toSet(); / Set setname = Set.from(listName);
set to list: setName.toList();
substring
- String을 시작지점과 끝지점 사이의 문자들을 가져온다
ex)
forEach
- list.forEach((item){
action
}); 를 사용하면 list의 item을 하나씩 가져와 action을 취할 수 있다
map
ex)
List<type> listName = [value1, value2, value3, value4, value5];
final variable = listName.map((x){return blah blah blah}); 혹은 listName.map((x)=>blahblahblah);
- for loop을 도는 대신 .map 을 사용해 list의 값을 하나씩 가져올 수 있다.
MapEntry
- Map을 mapping할때 key와 value를 같이 받는데 이 값을 다시 Map으로 돌려주려면 MapEntry 사용
ex)
Map<String, String> names = {'orange': '오렌지', 'banana': '바나나'};
final result = names.map((key, value) => MapEntry('fresh $key', '신선한 $value',));
-> ['fresh orange': '신선한 오렌지', 'fresh banana': '신선한 바나나']
Where
-map과 비슷하다, 단 true면 통과, false면 지움
list.where((x)=> x['group'] == 'fruit'); -> 'fruit' 이 있는 item 만 return 해준다
reduce
- ex) listName.reduce((prev, next) => prev+next);
- reduce에서는 첫 루핑때 list의 첫번째와 두번째의 값을 가져오고 그 다음 루핑부터는 그 전의 return 값과 그 다음 값을 가져온다.
- List의 값을 다 더할때 주로 사용, 초기 List안의 값의 type과 reduce 결과의 값의 type이 같아야 된다.
fold
-reduce 와 비슷함, Reduce는 prev parameter에 첫번째 값이 들어가지만 fold는 그 값을 지정해줘야 됨
- reduce와 달리 generic으로 return type을 지정해줘야 됨
Ex) final sum = numbers.fold<int>(0, (prev, next)=>prev+next);
Cascading operator
- list앞에 ...을 붙여 list를 펼쳐줄 수 있다.
- list안에 또 다른 list의 item을 하나씩 넣어줄때 사용
ex) List<int> even = [2,4,6,8];
List<int> odd = [1, 3, 5, 7];
print([...even, ...odd]); -> [2, 4, 6, 8, 1, 3, 5, 7]
Data to Class
- class로 만들면 에러를 줄일 수 있다
- map을 사용해서, people.map((x)=>Person(name: x['name'], group: x['group']);
Person{final String name;
final String group;
Person({required this.name, required this.group})
}
- 이렇게 바꾼 새로운 리스트를 정상적으로 표시하려면 Person이라는 class 안에서 String toString(){} 이라는 method를 override해서 바꿔줘야한다
-> @override String toString()=> 'Person (group$group, name$name)';
여러 개의 함수를 chain으로 계속 달 수 있다. ex) .where(blahblah).fold(blahblah).toString();
댓글