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

买做指甲的材料在哪个网站北京线上教学

买做指甲的材料在哪个网站,北京线上教学,wechat下载app,北京网站建设策划排名目录 前言 函数指针 函数当作另一个函数的参数 函数当作另一个函数的返回值 闭包 方法 关联函数 总结 前言 在前面几课中#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.w-s-a.com/news/260350/

相关文章:

  • 杏坛网站制作太原做网站要多少钱呢
  • 做新闻类网站还有市场吗东莞黄页网广告
  • 地方网站做外卖专业做互联网招聘的网站有哪些
  • 网站推广公司兴田德润紧急网页升级紧急通知
  • 厦门做网站哪家强企业网站网页设计的步骤
  • 普拓网站建设济南行业网站建设
  • 燕郊 网站开发网站里的地图定位怎么做
  • 门户网站建设招标互联网创业项目概述
  • 用什么做网站比较好市场调研公司是做什么的
  • 电商网站充值消费系统绍兴网站优化
  • 深圳网站建设公司联虚拟币交易网站开发
  • 专业网站设计建设公司抖音代运营公司排名前十强
  • 做网站架构肃北蒙古族自治县建设局网站
  • 推广网站怎么建经济研究院网站建设方案
  • 网站建设商家淘宝客自建网站做还是用微信qq做
  • django做网站效率高吗涉县移动网站建设报价
  • 做外贸网站注册什么邮箱能够做渗透的网站
  • 购物网站 怎么做织梦网站会员功能
  • 北京市网站开发公司郑州联通网站备案
  • 温岭专业营销型网站建设地址wordpress小程序怎么不用认证审核
  • 网站建设主体设计要求微信公众号缴费
  • 网站建设的税率WordPress多用户建站
  • 专业门户网站的规划与建设网络培训
  • 东莞汽车总站停止营业crm管理系统在线使用
  • 深圳网站建设公司哪个网络优化是做什么的
  • 大连地区做网站自己怎么做电影网站
  • 成都APP,微网站开发手机要访问国外网站如何做
  • 网站app建设用discuz做的手机网站
  • vs 2008网站做安装包公众号登录超时
  • 银川做网站推广wordpress dux会员中心