I am learning scala and can\'t understand why:
def signum(arg: Int) = {
if(arg > 0 ) 1
else if(arg < 0) -1
else 0
}
Has
It happens because in the second case you have not specified final else
part. In this case the return type of this missing branch would be Unit
. So Scala compiler infers AnyVal
as a common parent of Int
and Unit
.
you can try to add explicit return type to the function signature:
def signum(arg: Int): Int = ...
It will not compile with following error:
found : Unit
required: Int
else if(arg == 0) 0
^
one error found
So the compiler tells you that result type of the last if
is actually Unit
and not Int
.