Skip to content

Instantly share code, notes, and snippets.

@jlupien
Last active January 3, 2016 09:09
Show Gist options
  • Save jlupien/8440950 to your computer and use it in GitHub Desktop.
Save jlupien/8440950 to your computer and use it in GitHub Desktop.
"Unit" in Scala is a free-for-all?
// Doesn't compile. Good.
def futureInt(): Future[Int] = Future.value(Future.value(1))
// Compiles. Not good. Caller cannot wait on completion of nested future.
def futureUnit(): Future[Unit] = Future.value(Future.value(()))
// Also compiles. Nice convenience, but not worth the cost of the issues
// it might cause (as above), right?
def futureUnit(): Future[Unit] = Future.value(1)
// Maybe you could argue Future[Unit] is weird (or Unit in general is bad
// because side effects. But is it really avoidable?
// Example use case of Future[Unit]:
// https://github.com/twitter/util/blob/master/util-core/src/main/scala/com/twitter/util/Closable.scala
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment