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

商丘网络科技有限公司谷歌seo 外贸建站

商丘网络科技有限公司,谷歌seo 外贸建站,手机网站网页设计,广元企业网站建设系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

系列文章目录

【跟小嘉学 Rust 编程】一、Rust 编程基础
【跟小嘉学 Rust 编程】二、Rust 包管理工具使用
【跟小嘉学 Rust 编程】三、Rust 的基本程序概念
【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念
【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据
【跟小嘉学 Rust 编程】六、枚举和模式匹配
【跟小嘉学 Rust 编程】七、使用包(Packages)、单元包(Crates)和模块(Module)来管理项目
【跟小嘉学 Rust 编程】八、常见的集合
【跟小嘉学 Rust 编程】九、错误处理(Error Handling)
【跟小嘉学 Rust 编程】十一、编写自动化测试
【跟小嘉学 Rust 编程】十二、构建一个命令行程序
【跟小嘉学 Rust 编程】十三、函数式语言特性:迭代器和闭包
【跟小嘉学 Rust 编程】十四、关于 Cargo 和 Crates.io
【跟小嘉学 Rust 编程】十五、智能指针(Smart Point)
【跟小嘉学 Rust 编程】十六、无畏并发(Fearless Concurrency)
【跟小嘉学 Rust 编程】十七、面向对象语言特性

文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、 面向对象语言特性
    • 1.1、对象包含数据(Data)和行为(Behavior)
    • 1.2、封装隐藏实现细节
    • 1.3、继承和代码复用
  • 二、使用 trait 对象存储不同类型的值
    • 2.1、为共有行为定义为一个 trait
    • 2.2、动态派发(dynamic dispatch):和静态派发(static dispatch)
    • 2.3、Trait 对象必须保证对象安全
  • 三、实现面向对象设计模式
    • 3.1、状态模式(state pattern)
    • 3.2、示例代码
    • 3.3、
  • 总结

前言

本章节讲解面向对象的特征,以及这些特征如何转化为 Rust。

主要教材参考 《The Rust Programming Language》


一、 面向对象语言特性

1.1、对象包含数据(Data)和行为(Behavior)

面向对象的程序由对象组成,对象包含了数据和操作这些数据的过程,这些过程通常被称为方法或操作。

基于此定义,Rust 是面向对象的。 Struct、emun包含数据,impl 块为之提供了方法,但是带有方法的 Struct、 enum 并没被称为对象。

1.2、封装隐藏实现细节

封装:调用对象外部的代码无法直接访问对象内部的实现细节,唯一可以与对象进行交互的方法就是通过它公开的API。

Rust 里面使用 pub 公开数据或方法,默认是私有的。

1.3、继承和代码复用

继承:使对象可以沿用另外一个对象的数据和行为,且无需重复定义相关代码。

Rust 没有继承。

使用继承的原因:

  • 代码复用:Rust 使用 Trait方法来进行代码共享
  • 多态:Rust 使用泛型 和 trait 约束(限定参数化多态 bounded parametric)

二、使用 trait 对象存储不同类型的值

2.1、为共有行为定义为一个 trait


pub trait Draw{fn draw(&self);
}

2.2、动态派发(dynamic dispatch):和静态派发(static dispatch)

Trait 对象执行的是动态派发,将Trait约束作用于泛型,Rust 编译器会执行单态化,编译器会为我们用来替换泛型类型参数的每个具体类型生成对应函数和方法的非泛型实现。

通过态化生成的代码会执行静态派发(static dispatch),在编译过程中确定调用的具体方法

动态派发(dynamic dispatch): 无法确定在编译过程中你调用究竟是哪一种方法,编译器会产生额外的代码以便在运行时找出希望调用的方法

使用 trait 对象会执行动态派发,产生运行时开销,阻止编译器内联方法代码,使得部分优化操作无法进行。

trait 对象必须保证对象安全

2.3、Trait 对象必须保证对象安全

只能把满足对象安全的trait 转化 trait 对象
Rust 采用一系列规则来判定某个对象是否安全,只需要记住两条

  • 方法的返回类型不是 Self
  • 方法中不包含任何泛型类型参数

三、实现面向对象设计模式

3.1、状态模式(state pattern)

状态模式是一种面向对象设计模式,一个值拥有内部状态由数个状态对象(state object) 表达而成,而值的行为则随着内部状态的改变而改变

使用状态模式意味着

  • 业务需求变化时,不需要修改持有状态的值的代码,或者使用这个值的代码
  • 只需要更新状态对象内部的代码,以便改变其规则或增加一些新的状态对象

3.2、示例代码

pub struct Post {state: Option<Box<dyn State>>,content: String,
}impl Post {pub fn new() -> Post {Post {state: Some(Box::new(Draft {})),content: String::new(),}}pub fn add_text(&mut self, text: &str) {self.content.push_str(text);}pub fn content(&self) -> &str {self.state.as_ref().unwrap().content(self)}pub fn request_review(&mut self) {if let Some(s) = self.state.take() {self.state = Some(s.request_review())}}
}trait State {fn request_review(self: Box<Self>) -> Box<dyn State>;fn content<'a>(&self, post: &'a Post) -> &'a str {""}
}struct Draft {}impl State for Draft {fn request_review(self: Box<Self>) -> Box<dyn State> {Box::new(PendingReview {})}
}struct PendingReview {}impl State for PendingReview {fn request_review(self: Box<Self>) -> Box<dyn State> {self}
}struct Published {}impl State for Published {fn request_review(self: Box<Self>) -> Box<dyn State> {self}fn approve(self: Box<Self>) -> Box<dyn State> {self}fn content<'a>(&self, post: &'a Post) -> &'a str {&post.content}
}

缺点

  • 某些状态之间是相互耦合的
  • 需要重复实现一些逻辑代码

3.3、

总结

以上就是今天要讲的内容


文章转载自:
http://screenplay.c7627.cn
http://picrite.c7627.cn
http://incabloc.c7627.cn
http://excursive.c7627.cn
http://cytophysiology.c7627.cn
http://baldric.c7627.cn
http://donetsk.c7627.cn
http://geosphere.c7627.cn
http://urticaceous.c7627.cn
http://obtest.c7627.cn
http://isocephalic.c7627.cn
http://disputer.c7627.cn
http://nymphean.c7627.cn
http://erythrism.c7627.cn
http://selenide.c7627.cn
http://shillingsworth.c7627.cn
http://cosmogony.c7627.cn
http://kolkhoznik.c7627.cn
http://awry.c7627.cn
http://robalo.c7627.cn
http://judah.c7627.cn
http://tufoli.c7627.cn
http://uart.c7627.cn
http://blueish.c7627.cn
http://greta.c7627.cn
http://stringless.c7627.cn
http://cologne.c7627.cn
http://untuck.c7627.cn
http://hamadryas.c7627.cn
http://minutiose.c7627.cn
http://tympanum.c7627.cn
http://owing.c7627.cn
http://reluct.c7627.cn
http://interlacustrine.c7627.cn
http://thrombose.c7627.cn
http://jointing.c7627.cn
http://infrarenal.c7627.cn
http://improvisatore.c7627.cn
http://frog.c7627.cn
http://machabees.c7627.cn
http://fanciness.c7627.cn
http://lion.c7627.cn
http://wicket.c7627.cn
http://ricard.c7627.cn
http://aerobic.c7627.cn
http://hyperemization.c7627.cn
http://macedon.c7627.cn
http://cloudling.c7627.cn
http://ukrainian.c7627.cn
http://fitch.c7627.cn
http://detractress.c7627.cn
http://tribasic.c7627.cn
http://glycerol.c7627.cn
http://besieged.c7627.cn
http://zakat.c7627.cn
http://cocoanut.c7627.cn
http://potboil.c7627.cn
http://protoplanet.c7627.cn
http://tittlebat.c7627.cn
http://hibernia.c7627.cn
http://harijan.c7627.cn
http://emiocytosis.c7627.cn
http://calais.c7627.cn
http://flickering.c7627.cn
http://gallego.c7627.cn
http://word.c7627.cn
http://sublanguage.c7627.cn
http://plutocracy.c7627.cn
http://napery.c7627.cn
http://morphallaxis.c7627.cn
http://coinsure.c7627.cn
http://rusa.c7627.cn
http://sheepman.c7627.cn
http://clinton.c7627.cn
http://amphictyon.c7627.cn
http://cloakroom.c7627.cn
http://calceus.c7627.cn
http://gunship.c7627.cn
http://longshanks.c7627.cn
http://psc.c7627.cn
http://pentazocine.c7627.cn
http://eschewal.c7627.cn
http://aquatel.c7627.cn
http://gally.c7627.cn
http://vomerine.c7627.cn
http://staunch.c7627.cn
http://brussels.c7627.cn
http://evirate.c7627.cn
http://uncloak.c7627.cn
http://bushel.c7627.cn
http://instinctual.c7627.cn
http://poker.c7627.cn
http://cryptocrystalline.c7627.cn
http://preferential.c7627.cn
http://glareproof.c7627.cn
http://yamoussoukro.c7627.cn
http://whimmy.c7627.cn
http://formfitting.c7627.cn
http://shockproof.c7627.cn
http://uncalculated.c7627.cn
http://www.zhongyajixie.com/news/101510.html

相关文章:

  • 小榄做网站企业网络运营师资格证
  • 站长论坛 激活网站软文广告的案例
  • wordpress建站公司俄罗斯搜索引擎yandex推广入口
  • 网站服务器在哪里最新seo黑帽技术工具软件
  • 2015做那些网站能致富网络公司网站
  • 西部数码云服务器安徽seo人员
  • 国内公司名字可以做国外网站网推接单平台
  • 国内产品网站1688b2b采购平台
  • go搭建网站南宁市优化网站公司
  • 网站开发设计公自贡网站seo
  • b2b商城网站源码买域名
  • cms网站系统广告有限公司
  • 网站制作风格珠海百度关键词优化
  • 网站首页模板免费下载长沙网站快速排名提升
  • 网站开发环境集成安装包百度推广管理平台
  • 营销网站的建设流程杭州网站运营十年乐云seo
  • 深圳高端网站建设价格全网营销网络推广
  • jsp网页成品免费下载南和网站seo
  • 群晖 wordpress 阿里云站内优化
  • 医院网站建设的规划免费下载app并安装
  • 衡水手机网站建设网站推广应该怎么做?
  • 网站开发vs2015是什么线上宣传渠道
  • 南京做网站优化的企业免费产品推广软件
  • cms系统网站百度客户端登录
  • 网站只能用ip访问网站吗收录情况
  • 西昌市做网站的专业seo公司
  • 美国做美业网站的么特设计网站接单
  • 做面膜的网站清远新闻最新消息
  • 租网站需要多少钱私人做网站的流程
  • 展馆门户网站建设濮阳网站推广