mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-11-27 04:44:08 +03:00
[scala/en] Make return value example actually demonstrate issue
Previously the `return z` didn't actually have any effect on the output, since the outer function just return the anon function's result directly. Updated to make the outer function do something to demonstrate the difference. Also renamed functions to make what they're doing easier to follow, and added a couple examples of behavior w/ explanations
This commit is contained in:
parent
5b4c74365c
commit
bcb1b623b1
@ -253,16 +253,20 @@ weirdSum(2, 4) // => 16
|
|||||||
// def that surrounds it.
|
// def that surrounds it.
|
||||||
// WARNING: Using return in Scala is error-prone and should be avoided.
|
// WARNING: Using return in Scala is error-prone and should be avoided.
|
||||||
// It has no effect on anonymous functions. For example:
|
// It has no effect on anonymous functions. For example:
|
||||||
def foo(x: Int): Int = {
|
def addTenButMaybeTwelve(x: Int): Int = {
|
||||||
val anonFunc: Int => Int = { z =>
|
val anonMaybeAddTwo: Int => Int = { z =>
|
||||||
if (z > 5)
|
if (z > 5)
|
||||||
return z // This line makes z the return value of foo!
|
return z // This line makes z the return value of addTenButMaybeTwelve!
|
||||||
else
|
else
|
||||||
z + 2 // This line is the return value of anonFunc
|
z + 2 // This line is the return value of anonFunc
|
||||||
}
|
}
|
||||||
anonFunc(x) // This line is the return value of foo
|
anonMaybeAddTwo(x) + 10 // This line is the return value of foo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addTenButMaybeTwelve(2) // Returns 14 as expected: 2 <= 5, adds 12
|
||||||
|
addTenButMaybeTwelve(7) // Returns 7: 7 > 5, return value set to z, so
|
||||||
|
// last line doesn't get called and 10 is not added
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
// 3. Flow Control
|
// 3. Flow Control
|
||||||
|
Loading…
Reference in New Issue
Block a user