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

网站负责人 法人云端+文明实践活动

网站负责人 法人,云端+文明实践活动,江门营销型网站建设多少钱,solaris wordpress主题目录 前言 函数指针 函数当作另一个函数的参数 函数当作另一个函数的返回值 闭包 方法 关联函数 总结 前言 在前面几课中#xff0c;我们都或多或少的接触到了rust中的函数#xff0c;rust中的函数和其他语言的并没有什么不同#xff0c;简单的语法不在这篇文章中赘…目录 前言 函数指针 函数当作另一个函数的参数 函数当作另一个函数的返回值 闭包 方法 关联函数 总结 前言 在前面几课中我们都或多或少的接触到了rust中的函数rust中的函数和其他语言的并没有什么不同简单的语法不在这篇文章中赘述我们聊一聊函数式编程语言中的函数在函数式编程中例如Scala函数是一等公民函数可以被当作参数和返回值。 函数指针 函数指针是指向函数的指针(存储了函数的地址) 听起来像是废话我们通过代码来看看 fn main() {let a: fn(str) - usize get_length;let a_len a(hello); }fn get_length(x: str) - usize {x.len() }上面代码中我们定义了一个普通的函数在main函数中我们使用a接收了函数名可以注意看下变量a的类型这就是函数类型变量a就是函数指针。我们通过a去调用函数和通过get_length去调用函数取得的效果是一样的。 函数当作另一个函数的参数 fn main() {let f: fn(str) - usize get_length;let res get_length_plus(f, hello-rust); }fn get_length(x: str) - usize {x.len() }fn get_length_plus(f: fn(str) - usize, other: str) - usize {let len f(other);len } 上面的代码中定义了2个函数其中get_lengrh_plus函数的入参是一个函数类型意味着满足该类型的函数都可以传递进来。 函数当作另一个函数的返回值 fn main() {let ff: fn(i32, i32) - i32 get_function(add);let res: i32 ff(1, 2);println!(res {}, res); }fn get_function(op: str) - fn(i32, i32) - i32 {fn add(a: i32, b: i32) - i32 {a b}fn sub(a: i32, b: i32) - i32 {a - b}fn default(a: i32, b: i32) - i32 {0}match op {add add,sub sub,_ default,} }在上面代码中我们将函数作为另一个函数的返回值。 闭包 闭包是匿名函数先看一下闭包的语法 fn main() {let f1: fn(str) - usize |x: str| - usize { x.len() };f1(hello); } 闭包的语法和函数的语法基本一样只是形参的地方使用双竖线表示。闭包有很多省略规则但是初学者不建议省略太多按部就班的来。就好像Scala一样下划线写的太多组内的同学都看不懂我的代码导致我注释写的比代码都长。 闭包还有一个特性就是可以捕捉外部的变量例如下面的代码变量y虽然定义在闭包外部但是闭包中使用了变量y此时闭包会捕捉y。 fn main() {let y 1;let f2 |x: i32| { x y };println!(f2 res {}, f2(5)); } 方法 在大部分编程语言中函数和方法是特别类似的2个东西例如在java中方法特指属于某个对象的函数而静态方法属于某个类的函数。Rust中也一样结构体的函数称之为方法不过静态方法在Rust中称为关联函数名字叫法不用其实都差不多可以类比着学习我们先看看方法。 下面代码中我们定义了结构体Student并且使用impl块定义Student的方法在impl块中定义了2个方法分别是get_name1和get_name2需要注意的点是在方法的形参中分别使用了self和self:Self这两种写法是等价的self代表的是当前的实例类似java中的self而Self指的是当前的结构体类型。 struct Student {name: String,age: i32, }impl Student {fn get_name1(self: Self) {println!(i am {}, age {}, self.name, self.age);}fn get_name2(self) {println!(i am {}, age {}, self.name, self.age);}}fn main() {let s1 Student {name: String::from(wang),age: 24,};s1.get_name1();} 关联函数 关联函数类似Java中的类静态方法通过类名的方式调用在rust中叫做关联函数关联结构体的函数代码如下还是在impl块中定义和方法的区别在于无需加上self形参这就代表该函数不再是方法而是一个关联函数使用方式为结构体名称::函数名。 fn main() {let s1 Student {name: String::from(wang),age: 24,};Student::learn(); }struct Student {name: String,age: i32, }impl Student {fn learn() {println!(learn);} } 总结 这一节介绍了Rust中的函数、闭包、方法和关联函数等知识点。和其他的编程语言并没有什么不同。
http://www.hkea.cn/news/14317300/

相关文章:

  • 网站关键词策略怎样建一个个人网站
  • 淄博专业网站建设广州万户网络技术有限公司怎么样
  • 电商网站源代码网站空间试用
  • 邵阳市城市建设网站网页平台制作
  • 上海太江建设网站企业年金什么时候可以提取
  • 二级网站怎样做wordpress 评论列表
  • 工信部网站首页海城网站设计
  • 国外外包网站ui界面设计报告
  • 婺城区建设局网站创新的福州网站建设
  • 网站开发上证k线seo没什么作用了
  • 英迈思做的网站怎么样制作网页时一般需要兼容哪些浏览器
  • 做电影网站挣钱门户网站建设进展情况
  • 无备案网站 阿里联盟站长工具收录
  • 网站建设广告管理抗疫物资捐赠网
  • 官方网站下载打印机驱动博客网站程序
  • 做开发房地产网站可行吗wordpress课程总结
  • 网站建设财务项目管理制度wordpress 主题开发工具
  • 网站建设的pest分析中国最好的品牌策划公司
  • 经典网站模板下载接外贸单的平台有哪些
  • 外贸网站建设报价做美食直播哪个网站最好
  • jsp mysql 开发网站开发wordpress seo插件教程
  • 网站的页面动态需要哪些方法做网站建设一屏式网站
  • 公司外宣网站seo查询百科
  • 华为云建设网站需要域名吗本科自考是什么意思
  • 网站做301根目录在哪app制作单位
  • 帮别人做网站的单子网站建设劳务协议
  • 东莞网站建设(曼哈顿信科)电子商务网站建设小结
  • 渭南网站开发社区子网站群建设
  • 机械行业网站有哪些动易学校网站管理系统 下载
  • 公司网站上传ftp教程手机网站建设教程