• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Rust中的匿名函数与闭包

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、匿名函数

语法:“|参数名| 语句”

参考下面的这个示例:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let x = add(1, 2);
    println!("{}+{}={}", 1, 2, x);

    //匿名函数
    let add = |x, y| x + y;
    println!("{}+{}={}", 1, 2, add(1, 2));
}

可以看到,匿名函数不用刻意指定参数类型,rust会自动推断,匿名函数常用于精减代码,比如:

    let a = (1..10).filter(|x| (x % 2 == 0));
    for x in a{
        print!("{} ",x);
    }

这样就快速找出10以内的偶数。

 

二、闭包

rust中闭包本质就是一个匿名函数,它与函数最大的区别之一,在于闭包能捕获上下文环境中的变量

    let x = 12345;
    let t = || println! {"x={}",x};
    t();

x是在闭包语句之外定义的变量,但是闭包里仍可以访问,这是普通函数做不到的。

 

闭包还可以添加move关键字,强制将变量的所有权移动到闭包内,这样对于没有实现Copy trait的变量类型,闭包调用完成后,就无法再访问原来的变量了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap