Foundations
Functions
Functions give a name to reusable logic. Parameters bring values in, and
return sends one value back.
Return a value
functions.swift
Replay: real traced execution (multi-file project)
func addBonus(score: Int, bonus: Int) -> Int {
return score + bonus
}
let score = 30
let bonus = 5
let finalScore = addBonus(score: score, bonus: bonus)
print("final=\(finalScore)")
func addBonus(score: Int, bonus: Int) -> Int {
return score + bonus
}
let score = 18
let bonus = 5
let finalScore = addBonus(score: score, bonus: bonus)
print("final=\(finalScore)")
func addBonus(score: Int, bonus: Int) -> Int {
return score + bonus
}
let score = 42
let bonus = 5
let finalScore = addBonus(score: score, bonus: bonus)
print("final=\(finalScore)")
score ← 30, bonus ← 5
5let score→ 30 = 30 //@score=18, 426let bonus→ 5 = 57let finalScore = addBonus(score: score30, bonus: bonus5)8print("final=\(finalScore)")func addBonus(score: Int, bonus: Int) -> Int
1func addBonus(score30: Int, bonus5: Int) -> Int {2 return score30 + bonus53}finalScore ← 35
6let bonus = 57let finalScore→ 35 = addBonus(score: score30, bonus: bonus5)8print("final=\(finalScore35)")outputfinal=35
score ← 18, bonus ← 5
5let score→ 18 = 186let bonus→ 5 = 57let finalScore = addBonus(score: score18, bonus: bonus5)8print("final=\(finalScore)")func addBonus(score: Int, bonus: Int) -> Int
1func addBonus(score18: Int, bonus5: Int) -> Int {2 return score18 + bonus53}finalScore ← 23
6let bonus = 57let finalScore→ 23 = addBonus(score: score18, bonus: bonus5)8print("final=\(finalScore23)")outputfinal=23
score ← 42, bonus ← 5
5let score→ 42 = 426let bonus→ 5 = 57let finalScore = addBonus(score: score42, bonus: bonus5)8print("final=\(finalScore)")func addBonus(score: Int, bonus: Int) -> Int
1func addBonus(score42: Int, bonus5: Int) -> Int {2 return score42 + bonus53}finalScore ← 47
6let bonus = 57let finalScore→ 47 = addBonus(score: score42, bonus: bonus5)8print("final=\(finalScore47)")outputfinal=47
Follow the Function Call
scorestarts at30.bonusstarts at5.addBonus(score: score, bonus: bonus)sends both values into the function.- The function returns
30 + 5. finalScorebecomes35, and the program printsfinal=35. | score | bonus | finalScore | | --- | --- | --- | | 18 | 5 | 23 | | 30 | 5 | 35 | | 42 | 5 | 47 |
return
`return` ends the function call and provides its result.
Exercise: functions.swift
Reproduce final=35, then try score 18 and 42 and predict each final score before running it.