函数式编程

在Rust中,函数当做参数在方法中传递。这种特性是函数式编程的基础。

函数类型

fn max(x:i32,y:i32) -> i32 {if x>y {x} else {y}}

其类型为

fn(i32, i32) -> i32

把函数赋值给变量

fn max(x:i32,y:i32) -> i32 {if x>y {x} else {y}}
fn min(x:i32,y:i32) -> i32 {if x<y {x} else {y}}

这两个函数的类型都是:

fn(i32, i32) -> i32

可以把函数赋值给变量:

let fun = max;  // 自动推导赋值
println!("max(3,5) = {:?}", fun(3,5));

let t_fun:fn(i32, i32) -> i32 = max;    // 指定类型赋值
println!("max(3,5) = {:?}", t_fun(3,5));

另外绑定函数的变量没有所有权与所有权转移的概念。

fn max(x:i32,y:i32) -> i32 {if x>y {x} else {y}}

fn main() {
    let fun = max;  // 自动推导赋值
    let fun_1 = fun;  // 赋值,这里没有所有权的概念
    println!("max(3,5) = {:?}", fun(3,5));
    println!("min(3,5) = {:?}", fun(3,5));
    println!("min(3,5) = {:?}", fun_1(3,5));
} 
// 编译通过,运行正常!

函数作为函数的返回值

asdf

函数作为函数的参数值

asdf

闭包作为参数

asdf

函数返回闭包

asdf

results matching ""

    No results matching ""