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 Any
PHondogo
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