Chapter 6

  1. What would be the proper effect to represent getting each of the following:
  • The first element of some List: Option[?] with None representing an empty list does not have a head element
  • A list of tweets: Future[List[Tweet]] as the operation will probably take some time as it goes over the network
  • User information from the database for a given userId: Future[Option[?]] with Future denoting the network call and Option denoting no user account for a given userId
  1. What is a range of possible values of the following expression: Option(scala.util.Random.nextInt(10)).fold(9)(_-1) 

An inclusive [-1;9]

  1. What will be the result of the following expression: 
Try[Int](throw new OutOfMemoryError()).filter(_ > 10).recover {
case _: OutOfMemoryError => 100
}(20)

The Try constructor will not catch an OutOfMemoryError, hence the given expression will throw the OutOfMemoryError.

  1. Describe the result of the following expression:
Future[Int](throw new OutOfMemoryError()).filter(_ > 10).recover {
case _: OutOfMemoryError => 100
}

The result of the expression will be Future(<not completed>) which will eventually throw an OutOfMemoryError, as in the previous case.

  1. Given the following function:
def either(i: Int): Boolean = 
Either.cond(i > 10, i * 10, new IllegalArgumentException("Give me more")).forall(_ < 100)
  1. What would be the result of the following call: either(1)

The result will be true because Either.cond evaluates to Left for i == 2 and Left.forall evaluates to true for any Left.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.224.56.29