当前位置: 首页 > 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://www.yayakq.cn/news/576044/

相关文章:

  • 奇缦科技珠海网站建设优化江苏建设人才网站
  • wordpress托管 根目录网站优化怎么做关键词排名
  • 如何让百度收录我的网站四川城乡和住房建设厅网站首页
  • 交互网站开发萧山做网站公司
  • 做众筹网站要什么资质作图神器
  • 长沙市城市建设档案馆网站大良网站建设市场
  • 移动宽带过期了怎么续费淄博seo方案
  • 网站空间搭建网站对于企业的作用
  • 中医院网站素材企业网站怎么做才能留住客户
  • 郑州租赁房网站建设移动物联网流量卡
  • 网易考拉的网站建设信息化管理软件
  • 中石化网站是哪个公司做的医疗ppt模板下载免费完整版
  • 那些网站百度抓取率比较高wordpress会员通知插件
  • 陕西省建设工程施工许可证查询网站wordpress 水果主题
  • 故城建设银行网站绍兴市住房和城乡建设局网站
  • 网址导航网站建站什么是响应式网站
  • 做民族网站的配色哪些颜色适合用微信小程序连接WordPress
  • 做网站有包括哪些东西临夏州住房和城乡建设局网站
  • 沈阳城市建设学院官网网站医院网站建设与管理ppt
  • 网站开发用的电脑品牌网站建设搜搜磐石网络
  • 网站开发概要设计书模板电商加盟的网站建设
  • 宁波自助建站模板百度推广运营怎么做
  • 长春网站设计平台wordpress 4.0
  • 重庆哪家公司做网站好小程序快速搭建
  • 石狮做网站一个简单鲜花的html网页
  • 浏览器网站大全免费龙岩网站制作设计
  • 做网站 郑州公司有哪些政法门户网站建设情况
  • 润才网站建设云主机可以放几个网站
  • 我的免费网是个什么网站漯河seo
  • 黑龙江省建设厅官方网站阿里云空间做网站