Finish: 04-higher-order - 高阶函数
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user