diff --git a/stage03-functions/04-higher-order/main.go b/stage03-functions/04-higher-order/main.go index b82a42c..e5e4eee 100644 --- a/stage03-functions/04-higher-order/main.go +++ b/stage03-functions/04-higher-order/main.go @@ -8,9 +8,9 @@ func exercise1(apply func(int) int, value int) int { // 接收一个函数apply和一个值value // 调用apply函数处理value并返回结果 - result := ____ + result := apply(value) - return ____ + return result } func exercise2() func(int) int { @@ -19,7 +19,9 @@ func exercise2() func(int) int { // 返回一个函数,该函数将输入值乘以2 // 提示:返回一个匿名函数 - return ____ + return func(x int) int { + return x * 2 + } } func exercise3(vals []int, filter func(int) bool) []int { @@ -28,15 +30,15 @@ func exercise3(vals []int, filter func(int) bool) []int { // 接收一个int切片和一个过滤函数 // 返回过滤后的切片(只保留满足条件的元素) - var result ____ + var result []int - for _, val := range ____ { - if ____(val) { - result = append(result, ____) + for _, val := range vals { + if filter(val) { + result = append(result, val) } } - return ____ + return result } func exercise4(vals []int, mapper func(int) int) []int { @@ -45,13 +47,13 @@ func exercise4(vals []int, mapper func(int) int) []int { // 接收一个int切片和一个映射函数 // 返回映射后的切片(每个元素都经过mapper函数处理) - result := make([]int, ____) + result := make([]int, len(vals)) - for i, val := range ____ { - result[i] = ____(val) + for i, val := range vals { + result[i] = mapper(val) } - return ____ + return result } func exercise5(vals []int, reducer func(int, int) int, initial int) int { @@ -61,13 +63,13 @@ func exercise5(vals []int, reducer func(int, int) int, initial int) int { // 返回归约结果 // 例如:对切片求和、求积等 - result := ____ + result := initial - for _, val := range ____ { - result = ____(result, val) + for _, val := range vals { + result = reducer(result, val) } - return ____ + return result } func exercise6() int { @@ -79,18 +81,18 @@ func exercise6() int { // 返回 double(square(3)) 的结果 // 即:先平方(9),再双倍(18) - square := func(n int) int { return ____ } - double := func(n int) int { return ____ } + square := func(n int) int { return n * n } + double := func(n int) int { return n * 2 } compose := func(f, g func(int) int, x int) int { - return ____(____(x)) + return g(f(x)) } - return compose(____, ____, 3) + return compose(square, double, 3) } func main() { - fmt.Println("=== 高阶函数 练习 ===\n") + fmt.Println("=== 高阶函数 练习 ===") 平方 := func(n int) int { return n * n } result1 := exercise1(平方, 4)