def abs(x:Int) = if (x > 0) x else -x
Expressions like && and || use short-circuit evaluation because their right operands are not always evaluated.
When we define a function, we are using by-name since we evaluate parameters when we use them. When we define a val (val x = square(2)), we are using by-value.
Therefore, def x = loop will work perfectly fine, but val x = loop will not work.
def and(x: Boolean, y: => Boolean): Boolean = if (x) y else false
def or(x: Boolean, y: => Boolean): Boolean = if (x) true else y
We have to remember to include the => to make the second parameter pass by-name. This will let the function use short-circuit evaluation.
No comments:
Post a Comment