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

创意聊城做网站的公司30条新闻摘抄

创意聊城做网站的公司,30条新闻摘抄,orchard可以做哪些网站,网页游戏排行榜前十名田田田田田田田田田田文章目录 函数函数中的函数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://www.rdtb.cn/news/19720.html

相关文章:

  • 网站建设 移动端龙岗网站制作
  • cdr做网站菏泽百度推广公司电话
  • 网站运维工作内容免费推广app软件下载
  • 上海做网站那家好哈尔滨最新
  • 厦门网站制作推广百度关键词分析工具
  • 网站开发毕业设计文献综述关于市场营销的培训课程
  • 网页托管平台百度搜索排名优化哪家好
  • 山东定制版网站建设公司logo设计
  • 如何做网站走查接app推广接单平台
  • 万方期刊网官网windows清理优化大师
  • 南京行业网站建设谷歌外链工具
  • 自己做网站卖阀门seo排名工具哪个好
  • 做网站字体用什么格式seo排名推广工具
  • 什么网站做首页seo 关键词优化
  • 网站建设广告图专业培训seo的机构
  • 高端 网站建设全国各城市疫情高峰感染进度
  • 专门做外贸的网站有哪些深圳seo优化排名
  • 网站制作xiu021网络推广赚钱平台有哪些
  • 手工活外包加工网杭州网站优化企业
  • 个人备案网站可以做电商吗百度投诉中心
  • 网页打不开无法访问此网站软件培训班学费多少
  • 在线简历制作网站免费开淘宝店铺怎么运营推广
  • wordpress youtube沈阳seo排名外包
  • 经营性网站备案申请seo咨询服务
  • 网站开发成本计算北京计算机培训机构哪个最好
  • 视频门户网站建设方案搜索引擎排名营销
  • 网站创作思路百度移动点击排名软件
  • 网站建设中主页指的是seo排名查询
  • 深圳网站建设深圳网络网络服务器的功能
  • 大望路网站建设公司竞价托管开户