우당탕탕 무작정 앱 개발하기

일반인의 Flutter 앱개발 14. Dart(Cascading Operator, Map to Class, 실전 문제)

간다간다숑간다 2022. 10. 15. 00:03
728x90

오늘 할 일 : Cascading Operator(쉬움 주의), 실전 연습(주의..)

Cascading Operator

너무 쉽다고 놀라지 말자.

Cascading Operator : 생성한 List안에 list를 하나로 펼쳐서 널어준다.


바로 예시를 보면 느낌이 오실 것이다.

Cascading operator

홀 짝을 넣어준 리스트를 만들고 출력을 해준다.

Cascading operator result

이렇게 각 각 리스트가 형성이 된다. 여기에

Cascading operator

cascading operator '...' 점 3개를 넣어주면

Cascading operator result

짠 합쳐졌다^^. 이렇게 생성한 리스트는 완전히 새로운 리스트가 된다.

 Cacading Operator는 많이 사용하는 기능이니 알아두고 가자.

실전문제 

Map -> Class

그동안 강의 듣고 정리만 했는데 이제 실전문제다.

코드는 이전에 썼던 List를 가져온다.

dart Map to Class

아 요거 기억나지 않는가? 이것을 Class화 시켜보겠다. 왜냐고? 나도 같은 질문을 했는데

코드팩토리 형이(형 맞나?) 바로 설명해줬다.

Map에 들어있는 값은 자유도가 너무 높다.
우리가 보기에는 이름도 잘 들어가 있고 group명도 잘 들어가 있는데
실제로 name인지 namo인지 컴퓨터는 우리가 원하는 대로 들어있는지 이해할 수 없다.
그래서 우리가 Class에 저장을 시키면서 data를 관리하기 쉬운 형태로 바꿔야 한다.

이제 Class를 선언해준다.

Class안에는 name과 group만 들어가면 된다.

내가 제시할 예제를 보여주기 전에 먼저 만들어보자. 나는 생각이 안 나서 예제를 봤다^^

2022.10.06 - [우당탕탕 무작정 앱 개발하기] - 일반인의 Flutter 앱개발 5. Dart(Class, Named parameter)

 

일반인의 Flutter 앱개발 5. Dart(Class, Named parameter)

대망의 Class를 배우는 날 평소대로 더코딩파파님의 강의로 듣는데 도저히 이해가 안 됐다 ^^ 코딩 인생 3일 차에 처음으로 난관에 부딪혀서 공부를 그만두고 10분간 쉬어줬다. 휴식 후 코드팩토리

trythison.tistory.com

dart Class

매우 간단했다^^

이제 이걸 Mapping 해보자.

dart Map to Class

Map 타입의 people을/  Person이라는 Class에 매핑하여/  parsedPeople로 인스턴스화 한다.

그런데 에러가 뜨는 게 보인다. 컴파일러는 Map이기 때문에 저 값이 있는지 없는지 모르기에 확실하지 않다고 에러 메시지를 보내는 것이다. 

그러나 우리는 잘 알고 있기에 '내가 거기에 있는 거 봤어!!'라는 의미로 느낌표를 찍어주면 된다.

dart Map to Class

결과는

dart Map to Class result

리스트까지 시켜서 딱 이쁘게 나왔다. 그런데 Instance of라는 말이 보이지 않는가?

이것은 Class의 기본값이 'Instance of 어쩌고' 이기 때문에 그렇다.

바꿔주려면

@override를 쓰면 되는데 기억나지 않는가? 나는 안 난다.

하지만 이미 내가 했었더라.. 제목부터 override네 ^^

2022.10.09 - [우당탕탕 무작정 앱 개발하기] - 일반인의 Flutter 앱개발 8. Dart(Class : 상속 Inheritance, Override)

 

일반인의 Flutter 앱개발 8. Dart(Class : 상속 Inheritance, Override)

이번 강의 엄청 강조했다. OOP의 꽃 같은 상속이다. 상속(Inheritance) 상속을 얼마나 잘 쓰느냐에 따라 코딩의 퀄리티가 달라진다고 하니 개념을 잘 잡고 가자. 상속(Inheritance) 기본적으로 부모님이

trythison.tistory.com

이렇게 class안에 넣어주면 해결된다.


실전문제 2

For...in 사용

for....in 구문은 처음 보는 거라 검색해봤는데 충격적 이게도 이미 내가 포스팅을 해놨었다.

2022.10.04 - [우당탕탕 무작정 앱 개발하기] - 일반인의 Flutter 앱개발 3. Dart(Control flow, If, For, bool)

 

일반인의 Flutter 앱개발 3. Dart(Control flow, If, For, bool)

오늘은 Control flow에 대해서 살펴보자. Control flow 아 뭔가 벌써 복잡하다 색도 다양하고 문장도 길어진다. 하지만 우리는 앱 개발자를 할 것이기에 포기하지 말고 해내 보자! 코포자(코딩포기자)인

trythison.tistory.com

다시 복습해보면 

dart for in

Person class 형태의 pe에 parsedPeople의 값을 끝날 때까지 하나씩 넣어주며 돌린다.

dart for in result

그러면 이렇게 번갈아가면서 나온다.

 

이제 bts만 필터링해보자. 지난번에 배운 where이다.

밑을 보기 전에 한 번씩 해봤길 바란다. 나는 실패했다^^

dart where

parsedPeople은 Class Person의 인스턴스다. 그놈을 bts로 집어넣어 준다.

Where로 x 각각의 값은 person의 인스턴스이기에 '.'을 눌러주면 group이라고 뜨지 않는가?

dart where

이렇게 선택을 해서 하면 오류가 날 확률을 줄일 수 있다.

dart where result

만족스러운 결과가 나왔다.


Funtional Programming의 장점으로 마무리(충격적임 주의)

Functional Programming은 리턴 값을 활용해서 연결해서 실행해도 된다. 

예시를 보며 충격을 받아보자.

functional programming chaining

초록 박스처럼 하나하나 해줬던 작업을

빨간 박스처럼 끝내버릴 수도 있는 것이다. 

이야.... 신기한 코딩의 세계다.

함수는 리턴을 하고 그 리턴 값을 이용해서 바로 연결시켜도 되기야 하겠다마는

이게 되네....

 

결론

Funtional Programming은 실행하는 대상과 다른 새로운 형태의 값을 리턴할 수 있다.
그리고 그 리턴 값으로 연결시켜 실행할 수 있다.

그러나 이렇게 연결시켜서 짧게 만들면 좋기야는 하겠지만 협업을 하거나 내가 나중에 다시 봤을 때

기억이 안 날 수 있으니 적당히 코멘트를 달아주면서 하는 습관을 지니는 걸 추천한다.라고 했다.

 

 

아무튼 오늘은 여기까지이며

이로써 함수형 프로그래밍 강좌가 끝났다. 입문자로 배우려니 쪼끔 막히는 부분도 있었지만 어떻게든

끝나긴 끝났다. 

이제 지난번에 끊었던 Stream을 다시 이어 나가보겠다.

 

틀린 점이나 궁금한 점이 있으면 댓글로 알려달라.
입문자라 아무것도 모르고 이상한 소리를
썼을 가능성이 매우 매우 농후하다.
궁금한 점은 댓글로 토론하며 정답을 찾아보자.
코드팩토리님의  Dart강의를 보고 공부 중입니다.

 

728x90