高阶函数
Rust 提供了高阶函数(Higher Order Functions,HOF)。这些函数接受一个或多个函数作为参数,并/或产生一个更有用的函数。HOF 和惰性迭代器赋予了 Rust 函数式编程的特性。
fn is_odd(n: u32) -> bool {
n % 2 == 1
}
fn main() {
println!("找出所有平方为奇数且小于 1000 的数字之和");
let upper = 1000;
// 命令式方法
// 声明累加器变量
let mut acc = 0;
// 迭代:从 0, 1, 2, ... 到无穷大
for n in 0.. {
// 计算数字的平方
let n_squared = n * n;
if n_squared >= upper {
// 如果超过上限则跳出循环
break;
} else if is_odd(n_squared) {
// 如果是奇数,则累加值
acc += n_squared;
}
}
println!("命令式风格:{}", acc);
// 函数式方法
let sum_of_squared_odd_numbers: u32 =
(0..).map(|n| n * n) // 所有自然数的平方
.take_while(|&n_squared| n_squared < upper) // 小于上限
.filter(|&n_squared| is_odd(n_squared)) // 筛选奇数
.sum(); // 求和
println!("函数式风格:{}", sum_of_squared_odd_numbers);
}