안녕하세요? 가자밉니다 🐟
저는 현재 팀에서 Scala 와 Play2 로 만들어진 프로젝트 리팩토링을 담당하고 있습니다.
이 프로젝트를 맡은지는 한달도 채 되지 않았고, 이전엔 스칼라의 스도 써본적이 없는 완전 초보 입니다.
스칼라에 대해 철학부터 차근차근 배운 뒤에 프로젝트를 시작했으면 좋았겠지만, 이미 엎질러진 물이죠.
혹시 저처럼 갑작스럽게 Scala 프로젝트를 맡게된 분이 있다면 이 포스팅들이 도움될거 같아요.
그럼 우선, 스칼라 초보의 시선에서 스칼라의 핵심만을 빠르게 캐치하여 포스팅해보겠습니다.
( 혹시 잘못 포스팅된 부분이 있다면 따끔하게 지적해주세요!
많은 관심과 지적이 필요한 쪼렙입니다 🤕)
-
제 1장. Future
Scala 프로젝트 코드를 열었을때, 제일 막막했던 용어가 바로 Future 였습니다.
거의 대부분의 함수들의 반환값이 Future 형태였고, 함수 안에는 대부분 for - yield 문이 들어가있더라구요.
그럼 대체 Future 는 무엇이고 for yield 문은 무엇이며 "<-" 이 표현식은 무얼 뜻하는지, 지금부터 알아보겠습니다.
-
1. Future and Promise
Future 를 사용한다는 것은 "Async 하게 코딩하겠다" 는 의미입니다.
즉, Future를 사용하면 비동기 방식으로 동시에 많은 작업들을 수행할 수 있게 됩니다. 동시성을 위한 것이죠.
Scala는 Non-blocking 방식으로 Future 를 구성하기위해 flatMap, foreach, filter 와 같은 콤비네이터를 제공합니다.
자, 그럼 일단 콤비네이터들은 제쳐두고 Future 의 실제 사용법을 먼저 코드로 살펴봅시다.
Future 는 보통 아래와 같이 사용됩니다.
1 2 3 | val inverseFuture: Future[Matrix] = Future { fatMatrix.inverse() // non-blocking long lasting computation }(executionContext) | cs |