What is return type of `if` statement
scala
Solution
`if (cond) { expr }` returns common base type of `Unit` and type of `expr`, just like `if (cond) { expr } else { () }`.
It is `AnyVal` for `Int`, `Char` and so on, `Unit` for `Unit` and `Any` for `AnyRef`:
scala> if ( false ) 1
res0: AnyVal = ()
scala> val r = if ( false ) { () }
r: Unit = ()
scala> if ( false ) ""
res1: Any = ()
Problem
From Programming Scala book I read that in following code `configFilePath` constant will be type of `Unit`: ``` scala> val configFilePath = if (configFile.exists()) { | configFile.getAbsolutePath() | } configFilePath: Unit = () ``` But when I execute this code in REPL I get result of type `Any`. Why? The book examples use Scala 2.8, and I use Scala 2.10.