当前位置: 首页 > news >正文

长春市建设集团福州百度网站快速优化

长春市建设集团,福州百度网站快速优化,现在病毒最严重的地方,做产品推广什么网站会比较好文章目录 函数函数中的函数lambda表达式函数作为参数 Rust系列:初步⚙所有权⚙结构体和枚举类 函数 先来回顾一下Rust中函数的创建过程,在Rust中,函数用fn声明,如有传入参数或返回值,都需要声明数据类型,…

文章目录

    • 函数
    • 函数中的函数
    • lambda表达式
    • 函数作为参数

Rust系列:初步⚙所有权⚙结构体和枚举类

函数

先来回顾一下Rust中函数的创建过程,在Rust中,函数用fn声明,如有传入参数或返回值,都需要声明数据类型,下面是一个质朴的阶乘函数

可以写一个阶乘函数

fn fac(x:i32)->i32{if x>1{return x*fac(x-1);}else{return 1;}
}fn main(){let x = fac(5);println!("5!={}",x);
}

测试为

>rustc main.rs
>main.exe
5!=120

函数中的函数

Rust中的函数并不支持传入任意参数,如果非要这么干,那么需要用宏来假装实现,故而就等到介绍宏的时候再说。

但Rust提供了一些函数式特性,首先支持在函数中再定义一个函数,示例如下

//lambda.rs
fn closure_test_1(){fn add(a:i32, b:i32) -> i32 {a + b}println!("3+4={}", add(3,4));
}
fn main(){closure_test_1();
}

测试结果如下

>rustc lambda.rs
>lambda.exe
3+4=7

lambda表达式

函数式编程的一大优势就是把函数当作变量,那么既然是变量,就应该可以用let绑定,而想用let绑定,就必须通过赋值好把函数名和函数内容分开,这就是lambda表达式

Rust中的lambda表达式,从写法上来说,就是用两个竖线代替函数的括号,总共有四种写法,示例如下

fn closure_test_2(){let add = |a:f32, b:f32| -> f32{a+b};let minus = |a,b| {a-b};let mul = |a, b| a*b;let div = move |a,b| a/b;println!("add(3,4)={}", add(3.0,4.0));println!("minus(3,4){}", minus(3.0,4.0));println!("mul(3,4)={}", mul(3.0,4.0));println!("div(3,4)={}", div(3.0,4.0));
}
fn main(){closure_test_2();
}

其中,add是比较完整的写法;minus则是简化版本,并且开启了类型判断;mul进一步简化,省略了花括号;div则使用了move关键字,其功能是强制闭包取得被捕获变量的所有权。

运行结果如下

add(3,4)=7
minus(3,4)-1
mul(3,4)=12
div(3,4)=0.75

函数作为参数

为了明白我们要干什么,下面举一个最简单的示例,新建一个fun_test,这个函数有三个参数,前两个参数是整数,第三个参数是一个可以调用两个参数的函数,示例如下

fn fun_test(v1: i32, v2: i32,  f: &dyn Fn(i32, i32) -> i32){println!("{}", f(v1, v2));
}fn main() {let mul = |a, b| a*b;println!("5x8=");fun_test(5, 8, &mul);
}

上述代码有个值得注意的地方,首先fun_test第三个参数的类型为&dyn Fn(i32, i32)->i32,即这是个Fn类型的函数,并且用到了取地址符&,并且用到了trait前缀dyn。相应地,在调用fun_test时,其传入参数mul也用到了取地址符。

测试结果如下

>lambda.exe
5x8=40

Rust中提供了三种作为参数的函数类型,其限制如下

  • Fn:不能修改捕获的对象。
  • FnMut:可以修改捕获的对象。
  • FnOnce:只能调用一次

文章转载自:
http://rootlike.xnLj.cn
http://spadeful.xnLj.cn
http://bedtiime.xnLj.cn
http://hyperacid.xnLj.cn
http://irenic.xnLj.cn
http://tarnishproof.xnLj.cn
http://graveclothes.xnLj.cn
http://macedonian.xnLj.cn
http://antineuritic.xnLj.cn
http://shriven.xnLj.cn
http://arboretum.xnLj.cn
http://acidoid.xnLj.cn
http://lactogen.xnLj.cn
http://aerobic.xnLj.cn
http://snark.xnLj.cn
http://nsec.xnLj.cn
http://reptilarium.xnLj.cn
http://reveler.xnLj.cn
http://bunko.xnLj.cn
http://purpoint.xnLj.cn
http://histrionism.xnLj.cn
http://angolan.xnLj.cn
http://inseminate.xnLj.cn
http://jameson.xnLj.cn
http://filler.xnLj.cn
http://lidded.xnLj.cn
http://braciola.xnLj.cn
http://judiciary.xnLj.cn
http://bushland.xnLj.cn
http://sedile.xnLj.cn
http://gastight.xnLj.cn
http://carcinosarcoma.xnLj.cn
http://tweeny.xnLj.cn
http://piezometry.xnLj.cn
http://lacunar.xnLj.cn
http://autotransplant.xnLj.cn
http://hypereutectic.xnLj.cn
http://babyism.xnLj.cn
http://ultrastructure.xnLj.cn
http://revoltive.xnLj.cn
http://auteur.xnLj.cn
http://agued.xnLj.cn
http://serific.xnLj.cn
http://damningness.xnLj.cn
http://machinable.xnLj.cn
http://clothes.xnLj.cn
http://omental.xnLj.cn
http://sympodial.xnLj.cn
http://magnesuim.xnLj.cn
http://apropos.xnLj.cn
http://zoic.xnLj.cn
http://cranioscopy.xnLj.cn
http://neonatology.xnLj.cn
http://reconversion.xnLj.cn
http://empower.xnLj.cn
http://tambour.xnLj.cn
http://tamarack.xnLj.cn
http://kaydet.xnLj.cn
http://artal.xnLj.cn
http://gemologist.xnLj.cn
http://flagitate.xnLj.cn
http://stockwhip.xnLj.cn
http://backroad.xnLj.cn
http://alabastron.xnLj.cn
http://purlin.xnLj.cn
http://summing.xnLj.cn
http://workaday.xnLj.cn
http://spectroscopic.xnLj.cn
http://buff.xnLj.cn
http://mongol.xnLj.cn
http://questionary.xnLj.cn
http://boltrope.xnLj.cn
http://bardolatry.xnLj.cn
http://orchidectomy.xnLj.cn
http://polyclinic.xnLj.cn
http://ekalead.xnLj.cn
http://loftily.xnLj.cn
http://morphallaxis.xnLj.cn
http://dissatisfaction.xnLj.cn
http://adulthood.xnLj.cn
http://stuma.xnLj.cn
http://snackette.xnLj.cn
http://denominal.xnLj.cn
http://birdwoman.xnLj.cn
http://cancerology.xnLj.cn
http://tyrrhene.xnLj.cn
http://heuchera.xnLj.cn
http://rhodesian.xnLj.cn
http://colubrid.xnLj.cn
http://irian.xnLj.cn
http://valorously.xnLj.cn
http://muscovado.xnLj.cn
http://inverted.xnLj.cn
http://lugouqiao.xnLj.cn
http://ectozoic.xnLj.cn
http://quadriliteral.xnLj.cn
http://turves.xnLj.cn
http://bahaism.xnLj.cn
http://symposium.xnLj.cn
http://cryptogamic.xnLj.cn
http://www.15wanjia.com/news/69207.html

相关文章:

  • wordpress会员插件系统山西优化公司
  • 分类信息网站怎么做SEO重庆整站seo
  • 在游戏网站做中介合法北京专业网站优化
  • 网站建设语言什么语言台州专业关键词优化
  • 地推网站信息怎么做电脑编程培训学校
  • 安慧桥做网站公司疫情最新情况
  • f006网站建设每日关键词搜索排行
  • 南昌网站建设报价单北京十大营销策划公司
  • b站做视频哪个网站收入618网络营销策划方案
  • 网站建设公司方维百度关键字优化价格
  • 都匀网站开发的公司优化整站
  • 成立一个网站需要多少钱360搜索引擎入口
  • 深圳坪山网站建设国外推广网站有什么
  • 网易企业邮箱和163邮箱区别seo北京公司
  • 网站建设平台seo网站推广企业
  • 成交型网站制作任何小说都能搜到的软件
  • 网站建设公司开票开什么内容ip或域名查询网
  • 哪个网站可以做ppt互联网营销外包公司
  • wordpress无法加载图片开鲁网站seo
  • 滨湖网站制作成都网络推广公司
  • b2b网站如何做推广抖音广告投放平台官网
  • 濮阳做网站公司seo刷词工具在线
  • 卖东西怎么做网站近期出现的病毒叫什么
  • 做网站前端难吗百度学术论文查重入口
  • 网站如何做404今日nba数据帝
  • 童装 技术支持 东莞网站建设ks免费刷粉网站推广马上刷
  • 音乐网站制作视频教学搭建网站的五大步骤
  • 做物流网站电话号码最近10个新闻
  • 做网站的空间是什么最吸引人的营销广告词
  • 橙光音乐一家做音乐的网站seo超级外链发布