Instructor:
How much of an expression should be evaluated when computing a result?
+
-
*
/
<
<=
==
!=
|
&
~
^
f(x,y)
e1 && e2
e1
e2
p!=null && p.m()
e1 || e2
p==null || p.m()
if e1 then e2 else e3
e3
Conditional expression if e1 then e2 else e3
true
for i <- 0 to 10 do var x = 0 var y = 0 val z = (if scala.util.Random.nextInt % 2 == 0 then {x=1; 111} else {y=2; 222}) println(s"x=$x, y=$y, z=$z")
x=0, y=2, z=222x=1, y=0, z=111x=1, y=0, z=111...
int fact (int n) { if (n <= 1) { return 1; } else { return n * fact (n - 1); }}
int fact (int n) { return (n <= 1) ? 1 : n * fact (n - 1);}
def fcond(b: Boolean, t: Int, f: Int) : Int = if b then t else ffor i <- 1 to 10 do var x = 0 var y = 0 val z = fcond(scala.util.Random.nextInt % 2 == 0, {x=1; 111}, {y=2; 222}) println(s"x=$x, y=$y, z=$z")
x=1, y=2, z=222x=1, y=2, z=111x=1, y=2, z=111...
def fcond(b: Boolean, t: => Int, f: => Int) : Int = if b then t else ffor i <- 1 to 10 do var x = 0 var y = 0 val z = fcond(scala.util.Random.nextInt % 2 == 0, {x=1; 111}, {y=2; 222}) println(s"x=$x, y=$y, z=$z")
x=1, y=0, z=111x=0, y=2, z=222x=0, y=2, z=222...