Lambdas and Higher-Order Functions
Function Types
Name the input and output types of a function parameter.
function-type
`(Int, Int) -> Int` means a function receives two integers and returns an integer.
Function Types
FunctionTypes.kt
Replay: real traced execution (multi-file project)
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
val combined = operation(left, right)
return combined
}
fun main() {
val left = 3
val right = 2
val sum = combine(left, right, { a, b ->
a + b
})
println("left=$left")
println("sum=$sum")
}
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
val combined = operation(left, right)
return combined
}
fun main() {
val left = 1
val right = 2
val sum = combine(left, right, { a, b ->
a + b
})
println("left=$left")
println("sum=$sum")
}
fun combine(left: Int, right: Int, operation: (Int, Int) -> Int): Int {
val combined = operation(left, right)
return combined
}
fun main() {
val left = 6
val right = 2
val sum = combine(left, right, { a, b ->
a + b
})
println("left=$left")
println("sum=$sum")
}
left ← 3, right ← 2
6fun main() {7 val left→ 3 = 3 //@left=1, 68 val right→ 2 = 29 val sum = combine(left3, right2, { a, b ->10 a + b11 })combined ← 5
1fun combine(left3: Int, right2: Int, operation: (Int, Int) -> Int): Int {2 val combined→ 5 = operation(left3, right2)3 return combined54}sum ← 5
8 val right = 29 val sum→ 5 = combine(left3, right2, { a, b ->10 a + b11 })1213 println("left=$left3")14 println("sum=$sum5")15}outputleft=3 sum=5
left ← 1, right ← 2
6fun main() {7 val left→ 1 = 18 val right→ 2 = 29 val sum = combine(left1, right2, { a, b ->10 a + b11 })combined ← 3
1fun combine(left1: Int, right2: Int, operation: (Int, Int) -> Int): Int {2 val combined→ 3 = operation(left1, right2)3 return combined34}sum ← 3
8 val right = 29 val sum→ 3 = combine(left1, right2, { a, b ->10 a + b11 })1213 println("left=$left1")14 println("sum=$sum3")15}outputleft=1 sum=3
left ← 6, right ← 2
6fun main() {7 val left→ 6 = 68 val right→ 2 = 29 val sum = combine(left6, right2, { a, b ->10 a + b11 })combined ← 8
1fun combine(left6: Int, right2: Int, operation: (Int, Int) -> Int): Int {2 val combined→ 8 = operation(left6, right2)3 return combined84}sum ← 8
8 val right = 29 val sum→ 8 = combine(left6, right2, { a, b ->10 a + b11 })1213 println("left=$left6")14 println("sum=$sum8")15}outputleft=6 sum=8