스터디/Flutter+Dart

Dart Quick Start 2 - 빠르게 한번쯤 훑고 지나가야하는 정보들 (11~20)

Dalmangyi 2019. 8. 30.

지난번 퀵스타트에 이은 정보입니다

지난 게시글 : Dart Quick Start 1 (https://dalgonakit.tistory.com/113

 

11. Getter, Setter 

객체의 속성에 대해 읽기 및 쓰기를 제공하는 방법입니다

함수를 사용할때 처럼 () 괄호를 사용하지 않고, 변수에 접근하는 것처럼 . 점 으로 사용이 가능합니다

 

 

12. Mixin (with)

상속이 아닌 클래스의 모든 변수와 함수를 재사용 할 때 with 키워드를 사용합니다.

또한 여러개를 받아올 수도 있습니다

 

 

13. Factory 

factory패턴(여러개의 물건을 생산하는 공장처럼, 여러가지 클래스를 반환해주는 패턴)을 도와주는 factory키워드를 제공해주고 있습니다.

 

 

 

14. Cascade Operator (..)

.. 점점 키워드를 이용해서 함수 실행을 이어서 호출해줄 수 있습니다

Builder 패턴(https://johngrib.github.io/wiki/builder-pattern/) 과 비슷해 보이지만,

실행해보시면 아시겠지만 ..키워드를 사용한 결과가 담길꺼같은 last를 출력해 보았지만 minusCount() 함수에서 return한 값이 담겨있지는 않는것을 알 수 있습니다

 

 

 

15. 배열 유틸 함수 (Array Util Methods)

배열을 편하게 다룰수 있는 유틸 함수들 입니다 

forEach : 한 개씩 값을 다루며, return 할 수 없음.

map : 한 개씩 값을 다루며, return 할 수 있음.

List.from : List를 복사 해줌.

sort : 정렬해줌. 값을 안정적으로 정렬해주는 것이 아님 (sort2 참고)

reduce : 하나의 값으로 압축 해줌. 현재값과 다음 값을 한 세트로 해서 loop 함.

fold : reduce와 마찬가지로 하나의 값으로 압축 해줌. 초기값을 추가할 수 있음. (이름을 같은 reduce로 해주면 좋았을텐데...)

every : 모든 값이 조건식에 맞는지 bool 값으로 반환.

where : 조건에 맞는 값을 배열 반환 함. 여러개 일경우 배열, 1개일 경우에도 배열로 반환함.

firstWhere : 조건에 맞는 첫 번째 값을 변수로 반환함. 

singleWhere : 조건에 맞는 첫 번째 값을 변수로 반환하지만, 만약 여러개일 경우 에러가 발생함. orElse를 통해서 만약 없을 경우 반환하는 값을 지정해줄 수 있음.

take : 주어진 갯수 만큼 순차적으로 배열로 반환함.

skip : 주어진 갯수 만큼 순차적으로 건너뛰고 배열로 반환함

expand : 여러개의 배열을 하나의 배열로 반환.

 

 

16. Async, Await 

async : 오래걸리는 작업을 진행중인 코드와 별도로 동작할 수 있게 지원해 줍니다 

await : async가 끝나길 기다리는 키워드 입니다.

 

await는 기다리는 기능이 있기 때문에, 항상 await를 감싸는 영역에는 async가 있어야 합니다 (ex. async { ... })

Future.delayed는 딜레이를 주는 함수이지만, func함수가 async이기 때문에 await를 해줍니다

 

 

 

17. Future

async와 await과 함께 많이 사용되는 비동기는 담당하는 클래스입니다 

비동기로 데이터를 반환할 땐 Future<T> 를 이용해서 return 합니다

 

 

18. Stream

데이터의 흐름을 관리해주는 클래스 입니다 

fromIterable로 배열도 가볍게 처리가 가능하고,

periodic으로 일정한 시간마다 처리도 가능하고,

async함수로 주어진 Future<T>도 처리가 가능합니다

더 다양한 정보는 https://software-creator.tistory.com/9 여기서 참고해주세요 

async*과 yield, broadcast에 대한 정보도 있습니다.

 

 

19. ISolate (분리)

Dart는 한 쓰레드만을 사용합니다.

하지만 async나 사용자 입력은 비동기입니다. 처리하는 작업 단위를 ISolate라고 합니다. 

기본적으로 main ISolate가 존재하고, 사용자의 input을 담당하는 ISolate가 있습니다. 

비동기 async를 하게 될 경우엔 모두 같은 main ISolate에서 작동하게 됩니다 

이런 같은 ISolate에서는 락을 걸 수 있지만, 서로 다른 ISolate에서는 락 끼리 영향을 끼칠 수 없습니다

Isolate는 spawn 과정을 통해서 생성할 수 있습니다

( 참고 https://software-creator.tistory.com/5 , https://codingwithjoe.com/dart-fundamentals-isolates/ )

 

이번 예제는 실행이 안됩니다. IDE에서 직접 실행해주세요 

실행할때마다 매번 다른 결과가 나올 수 있습니다.

 

 

 

 

20. Function 

Function은 함수를 하나의 변수 처럼 다루는 방법을 말합니다 

자바스크립트에선 Closure, C++에선 void*, Callback Function 이라고도 합니다

 

 

 

댓글