Finish: 04-higher-order - 高阶函数

This commit is contained in:
2026-03-19 10:20:24 +08:00
parent 0e6a3b24f3
commit 95b45fb1b6
+23 -21
View File
@@ -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)