natpryce
02/26/2019, 11:16 AMJeremy
02/26/2019, 11:21 AMnatpryce
02/26/2019, 11:22 AMnatpryce
02/26/2019, 11:23 AMRobert Jaros
02/26/2019, 11:25 AMRobert Jaros
02/26/2019, 11:25 AMval v = Option("test")
println(v.getOrElse { 0 })Robert Jaros
02/26/2019, 11:25 AMnatpryce
02/26/2019, 11:26 AMnatpryce
02/26/2019, 11:27 AMRobert Jaros
02/26/2019, 11:28 AMnatpryce
02/26/2019, 11:28 AMOption("test").getOrElse{0} has type Any, and println can be passed an Anynatpryce
02/26/2019, 11:29 AMPHondogo
02/26/2019, 11:34 AMRobert Jaros
02/26/2019, 11:50 AMRobert Jaros
02/26/2019, 11:51 AMscala> Option[java.util.Date](new java.util.Date()).getOrElse(0).getTime()
<console>:8: error: value getTime is not a member of AnyPHondogo
02/26/2019, 11:57 AMPavlo Liapota
02/26/2019, 1:09 PMT. Any is super type of String, so function can return value of type Any and value 0 passes this condition.
I suppose that you agree that this code should be allowed:
Option("test").getOrElse { 0 as Any }
and compiler is just smart enough to infer type which will pass condition even without explicit cast.PHondogo
02/26/2019, 3:38 PM