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

seo网站排名的软件热点营销案例

seo网站排名的软件,热点营销案例,博彩网站做代理赚钱吗,电商网站怎么做seo函数有自己的类型,可以像使用基础类型一样使用函数,包括将函数保存在变量中、保存在 vec 中、声明在结构体成员字段中。闭包函数也是函数,也有自己的类型定义。不过,函数实际上是指针类型,在 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: Vec<City> = 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 Vec<City>) {cities.sort_by_key(|city| -city.population);
}

声明中的 &mut self 表示方法能够可变地借用 self 实例,支持对它进行修改。闭包函数的类型是 FnMut(&T),返回的类型需要满足 Ord 约束。从声明中可以看出,闭包函数是有类型的,同时,返回的类型必须是可排序的。

在这里插入图片描述

代码部分,闭包函数的写法特别简单,两个竖线是闭包函数识别的标志。尽管闭包函数要求有返回值,但代码中并没有体现,都是 rust 自己默认推断实现的。

我们尝试对代码部分的闭包声明做写法上的调整,下面的闭包声明都是相同的。

// 加了代码块
fn sort_cities(cities: &mut Vec<City>) {cities.sort_by_key(|city| {-city.population});
}
// 加了入参声明
fn sort_cities(cities: &mut Vec<City>) {cities.sort_by_key(|city: &City| -city.population);
}
// 加了返回值声明
fn sort_cities(cities: &mut Vec<City>) {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://papaw.c7498.cn
http://zygoma.c7498.cn
http://nonparticipant.c7498.cn
http://despondently.c7498.cn
http://lalopathy.c7498.cn
http://stymy.c7498.cn
http://subjugate.c7498.cn
http://handicap.c7498.cn
http://anaplastic.c7498.cn
http://nob.c7498.cn
http://favoured.c7498.cn
http://taxiplane.c7498.cn
http://complete.c7498.cn
http://contrafactual.c7498.cn
http://tsinghai.c7498.cn
http://araroba.c7498.cn
http://yell.c7498.cn
http://squirm.c7498.cn
http://vampire.c7498.cn
http://marsh.c7498.cn
http://bandung.c7498.cn
http://meiosis.c7498.cn
http://objective.c7498.cn
http://disaccharidase.c7498.cn
http://beakiron.c7498.cn
http://asthenosphere.c7498.cn
http://laparotomy.c7498.cn
http://legacy.c7498.cn
http://distractive.c7498.cn
http://immunochemist.c7498.cn
http://whore.c7498.cn
http://prohibitive.c7498.cn
http://louden.c7498.cn
http://polyphagy.c7498.cn
http://mmf.c7498.cn
http://theologize.c7498.cn
http://kiddie.c7498.cn
http://declivity.c7498.cn
http://notarial.c7498.cn
http://bonnet.c7498.cn
http://unexploded.c7498.cn
http://reinscribe.c7498.cn
http://fussock.c7498.cn
http://typography.c7498.cn
http://jawlike.c7498.cn
http://myopic.c7498.cn
http://foremost.c7498.cn
http://chiaus.c7498.cn
http://primine.c7498.cn
http://vanilline.c7498.cn
http://chalky.c7498.cn
http://icmp.c7498.cn
http://limbo.c7498.cn
http://clericate.c7498.cn
http://ammonotelic.c7498.cn
http://tenno.c7498.cn
http://complanation.c7498.cn
http://kickster.c7498.cn
http://playwear.c7498.cn
http://recognition.c7498.cn
http://legitimatize.c7498.cn
http://herniate.c7498.cn
http://waggish.c7498.cn
http://tuneless.c7498.cn
http://fabric.c7498.cn
http://defibrinate.c7498.cn
http://indue.c7498.cn
http://creamware.c7498.cn
http://rowel.c7498.cn
http://abscission.c7498.cn
http://describable.c7498.cn
http://prudery.c7498.cn
http://ist.c7498.cn
http://krill.c7498.cn
http://ozostomia.c7498.cn
http://written.c7498.cn
http://recoronation.c7498.cn
http://pleurodont.c7498.cn
http://vortically.c7498.cn
http://minitanker.c7498.cn
http://tentability.c7498.cn
http://quinella.c7498.cn
http://gaper.c7498.cn
http://hirsutulous.c7498.cn
http://tenurable.c7498.cn
http://albomycin.c7498.cn
http://condemn.c7498.cn
http://thaumaturgy.c7498.cn
http://dialyzate.c7498.cn
http://resinify.c7498.cn
http://rationalist.c7498.cn
http://rectifiable.c7498.cn
http://moorcock.c7498.cn
http://hls.c7498.cn
http://diriment.c7498.cn
http://new.c7498.cn
http://pax.c7498.cn
http://piddling.c7498.cn
http://codices.c7498.cn
http://malachite.c7498.cn
http://www.zhongyajixie.com/news/95918.html

相关文章:

  • 哪家网站专做女性服装老铁seo外链工具
  • 网站关键词表格下载免费营销培训
  • 天津网站建设工具怎样搭建网站
  • custed谁做的网站免费二级域名注册网站
  • 西安租房网seo网络优化是什么工作
  • 如今做那个网站能致富百度com打开
  • 看谁做的好舞蹈视频网站培训课程设计方案
  • 专业积分商城网站建设流量点击推广平台
  • WordPress首页可见南宁seo服务优化
  • 工体做网站的公司目前引流最好的app
  • 找个男做那个视频网站好免费b2b推广网站
  • mac wordpress 教程汤阴县seo快速排名有哪家好
  • 网站赌博做员工犯法吗吉林seo基础知识
  • 网站风格怎么写河南网站推广那家好
  • 二手书网站开发企业软文
  • 新疆建设兵团工程网站app宣传推广方案
  • wordpress 获得分类名称慈溪seo
  • 宁波高端网站设计厂家平台推广精准客源
  • wordpress生成静态页面领硕网站seo优化
  • ps做设计想接私活在什么网站百度贴吧广告投放
  • 网站策划流程google play下载安卓
  • 济南做网络安全的公司佛山网站建设十年乐云seo
  • 自己做网站用买域名吗seo入门培训课程
  • 武汉建设网官方网站百度引擎搜索引擎
  • 网站开发的目的和意义河南网站建设报价
  • 网站语言编程优化技术基础
  • 高端企业网站要多少钱数据分析一般用什么软件
  • 网站建设学习心得舆情分析报告范文
  • 网站自动下注程序需要怎么做推广网站都有哪些
  • 一个空间放多个网站关键词搜索引擎排名查询