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

网站建设与管理实践报告商家怎么入驻百度

网站建设与管理实践报告,商家怎么入驻百度,汽车网站开发思路,变色龙app制作教程函数有自己的类型#xff0c;可以像使用基础类型一样使用函数#xff0c;包括将函数保存在变量中、保存在 vec 中、声明在结构体成员字段中。闭包函数也是函数#xff0c;也有自己的类型定义。不过#xff0c;函数实际上是指针类型#xff0c;在 rust 所有权中属于借用的关…函数有自己的类型可以像使用基础类型一样使用函数包括将函数保存在变量中、保存在 vec 中、声明在结构体成员字段中。闭包函数也是函数也有自己的类型定义。不过函数实际上是指针类型在 rust 所有权中属于借用的关系。 我们声明一个 Vec 对象集并使用闭包函数做排序。接下来我们自定义一个 City 结构体类型Vec 中的每个元素都是 City 类型后面会根据结构体中的 population 属性做排序。 #[derive(Debug)] struct City {name: String,population: i64,country: String, }我们初始化 cities 变量并向其中依次追加 3 个元素。vec 追加元素使用 push 函数push 过程也会触发底层数组的扩容。rust 也提供了初始化指定 vec 容量的函数 with_capacity。 fn main() {let mut cities: VecCity vec![];cities.push(City {name: (上海.to_string()),population: (123i64),country: (China.to_string()),});cities.push(City {name: (北京.to_string()),population: (12i64),country: (China.to_string()),});cities.push(City {name: (广州.to_string()),population: (124i64),country: (China.to_string()),});sort_cities(mut cities);println!({:?}, cities) }sort_cities 算是这篇文章的关键函数了函数内部使用到了闭包。想要彻底明白下面的逻辑首先要了解 sort_by_key 函数这个函数的入参是一个闭包函数。 fn sort_cities(cities: mut VecCity) {cities.sort_by_key(|city| -city.population); }声明中的 mut self 表示方法能够可变地借用 self 实例支持对它进行修改。闭包函数的类型是 FnMut(T)返回的类型需要满足 Ord 约束。从声明中可以看出闭包函数是有类型的同时返回的类型必须是可排序的。 代码部分闭包函数的写法特别简单两个竖线是闭包函数识别的标志。尽管闭包函数要求有返回值但代码中并没有体现都是 rust 自己默认推断实现的。 我们尝试对代码部分的闭包声明做写法上的调整下面的闭包声明都是相同的。 // 加了代码块 fn sort_cities(cities: mut VecCity) {cities.sort_by_key(|city| {-city.population}); }// 加了入参声明 fn sort_cities(cities: mut VecCity) {cities.sort_by_key(|city: City| -city.population); }// 加了返回值声明 fn sort_cities(cities: mut VecCity) {cities.sort_by_key(|city| - i64 { -city.population }); }闭包引用对象的所有权 在闭包函数体中使用外部的变量会导致外部变量的所有权发生变更吗如果是 go 语言外部变量在闭包中是通过引用来访问的。具体到 rust 语言上我们可以通过自定义闭包函数验证一番。 我们在原代码基础上做了简化is_long_name 函数体中直接访问外部变量 sh并将 sh 的名字重新赋值一个新的变量 name。编译器检测到 sh.name 发生了所有权转移编译失败。 fn main() {let sh City {name: (上海.to_string()),population: (123i64),country: (China.to_string()),};let is_long_name || - bool {let name sh.name;if name.len() 2 {true} else {false}};is_long_name();println!({:?}, sh); }在闭包声明的开头大家也看到过 move 关键字。那么这个 move 是用来解决什么问题的呢 针对这个例子我们专门在闭包内对 sh.name 重新做了赋值运算变量所有权发生转移也符合认知。那么我们现在直接使用 sh.name 进行长度判断对应截图中的第 13 行代码。左右差异点只有右边的闭包声明中追加生 move 关键字。 rust 中闭包取得数据有两种方式转移和借用。move 会导致使用到的外部变量发生所有权转移。右边的例子中闭包中的变量 sh.name 的所有权就发生了转移导致编译失败。
http://www.w-s-a.com/news/103343/

相关文章:

  • 摄影素材网站做知识问答的网站
  • 中小企业网站建设济南兴田德润电话门店管理系统软件排行
  • 昆明工程建设信息网站柳州网站建设公司哪家好
  • 如何分析网站关键词北京门户网站网址
  • 做网站与做游戏那个好网站域名怎么起
  • 有没有做cad单的网站银行网站建设方案视频
  • 和各大网站做视频的工作高校网站群管理系统
  • 中国建设人才服务信息网是正规网站怎么注销自己名下的公司
  • 网站开发新型技术那些网站做任务领q币
  • 海口手机网站建设wordpress微支付宝
  • 做公司网站需要几天深圳自定义网站开发
  • 做网站学多长时间可以学会推广软件公司
  • 网络网站设计培训长沙建站模板大全
  • 站群搭建移动端处理器天梯图
  • 岳池发展建设集团有限公司门户网站湛江seo咨询
  • 手机网站工具关键词排名是什么意思
  • 游民星空是谁做的网站沈阳网站托管公司
  • 做网站搭建需要什么人vs2017移动网站开发
  • 购物网站开发需要什么技术怎么查看网站是否备案
  • 学做电商那个网站好网站建设投票主题
  • 中卫网站推广网络营销毕业设计做网站大小有什么要求
  • 做问卷网站义乌网站建设推广专家
  • 不会编程怎样建设网站昆明做网站哪家
  • 直播网站模板新营销平台电商网站
  • 建设部指定招标网站免费的企业查询软件
  • 做前端常用的网站及软件下载平台优化是什么意思
  • 企石镇仿做网站wordpress 网站白屏
  • 班级网站建设规划书专业定制网红变色杯
  • 上海网站设计公司电话甘肃路桥建设集团有限公司官方网站
  • 哈尔滨网站建设网站开发陕西省建设监理工程协会网站