본문 바로가기

스칼라 시작하기 - Future



안녕하세요? 가자밉니다 🐟


저는 현재 팀에서 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