After wondering about certain bugs in my first Scala application, I discovered that my limit function was not quite working … at all!
So here was my first attempt:
def limit(x : Double, min: Double, max : Double) = {
if (x < min) min;
if (x > max) max;
x;
}
It always returned x!
My second attempt looked like this:
def limit(x : Double, min: Double, max : Double) : Double = {
if (x < min) return min;
if (x > max) return max;
x;
}
and it worked.
So my question: why are min; and max; from the first example basically no-ops, and x; is not?
And is my second attempt good Scala?
I’ve written a generic version of this (which I had called
clamp), which looks like this:In Scala, the result of an expression is the last value mentioned in that expression. The result of the if-expressions in your first attempt is thrown away, because each if-expression is followed by another expression. Your second attempt is ok but you could do it with
if ... elselike in my example. You could write yours like this: