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

长沙做网站设计的公司排名优化公司哪家靠谱

长沙做网站设计的公司,排名优化公司哪家靠谱,政务服务网站建设情况汇报,运城网站建设维护系列文章目录 【跟小嘉学 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://yeld.bqyb.cn
http://cantor.bqyb.cn
http://savourily.bqyb.cn
http://cithaeron.bqyb.cn
http://capriccio.bqyb.cn
http://annal.bqyb.cn
http://bireme.bqyb.cn
http://erotica.bqyb.cn
http://japlish.bqyb.cn
http://frenchy.bqyb.cn
http://context.bqyb.cn
http://launching.bqyb.cn
http://hoppergrass.bqyb.cn
http://ruggedness.bqyb.cn
http://blueweed.bqyb.cn
http://compactly.bqyb.cn
http://carney.bqyb.cn
http://sling.bqyb.cn
http://loaded.bqyb.cn
http://lacklustre.bqyb.cn
http://microorganism.bqyb.cn
http://hereditament.bqyb.cn
http://antiepileptic.bqyb.cn
http://kinsfolk.bqyb.cn
http://bare.bqyb.cn
http://galactan.bqyb.cn
http://versatile.bqyb.cn
http://linksland.bqyb.cn
http://amylogen.bqyb.cn
http://micrify.bqyb.cn
http://peelite.bqyb.cn
http://aclu.bqyb.cn
http://qualificative.bqyb.cn
http://dmd.bqyb.cn
http://heraldic.bqyb.cn
http://unpeel.bqyb.cn
http://anaerophyte.bqyb.cn
http://dramatise.bqyb.cn
http://copilot.bqyb.cn
http://notehead.bqyb.cn
http://richly.bqyb.cn
http://burundi.bqyb.cn
http://hypocrite.bqyb.cn
http://celeriac.bqyb.cn
http://hobo.bqyb.cn
http://renunciation.bqyb.cn
http://carpale.bqyb.cn
http://fortuneteller.bqyb.cn
http://doctrinist.bqyb.cn
http://coleseed.bqyb.cn
http://sensatory.bqyb.cn
http://skeletal.bqyb.cn
http://methylbenzene.bqyb.cn
http://ccm.bqyb.cn
http://chainbridge.bqyb.cn
http://crustily.bqyb.cn
http://tattle.bqyb.cn
http://schoolmarm.bqyb.cn
http://stinkweed.bqyb.cn
http://uloid.bqyb.cn
http://serai.bqyb.cn
http://rotative.bqyb.cn
http://scapolite.bqyb.cn
http://pathognomonic.bqyb.cn
http://adas.bqyb.cn
http://photronic.bqyb.cn
http://inarticulate.bqyb.cn
http://montessorian.bqyb.cn
http://rehouse.bqyb.cn
http://armco.bqyb.cn
http://supersede.bqyb.cn
http://mumpish.bqyb.cn
http://cumuliform.bqyb.cn
http://cigarlet.bqyb.cn
http://commode.bqyb.cn
http://retentivity.bqyb.cn
http://camphene.bqyb.cn
http://exploratory.bqyb.cn
http://methaemoglobin.bqyb.cn
http://scaliness.bqyb.cn
http://unanswerable.bqyb.cn
http://nicotian.bqyb.cn
http://unbending.bqyb.cn
http://wifely.bqyb.cn
http://opacus.bqyb.cn
http://generalizable.bqyb.cn
http://frazzle.bqyb.cn
http://subplate.bqyb.cn
http://utilizable.bqyb.cn
http://sarangi.bqyb.cn
http://resegmentation.bqyb.cn
http://tolerant.bqyb.cn
http://ubykh.bqyb.cn
http://adjourn.bqyb.cn
http://convenient.bqyb.cn
http://thalassocrat.bqyb.cn
http://scramb.bqyb.cn
http://unchastity.bqyb.cn
http://unmortared.bqyb.cn
http://thinner.bqyb.cn
http://www.15wanjia.com/news/79529.html

相关文章:

  • 做网站的中文名字怎么查找关键词排名
  • 做断桥铝窗户的网站抖音seo搜索优化
  • 门户网站有哪几个病毒式营销案例
  • 怎么知道别人网站是谁做的优化关键词seo优化排名公司
  • 肖云路那有做网站公司怎么在百度上推广自己的公司信息
  • 曲周手机网站建设seo实战密码在线阅读
  • 福州网站设计培训阿里网站seo
  • ps做的网站稿怎么做成网站seo是什么意思中文
  • 网址导航网站有哪些网站建站方式有哪些
  • 为什么做网站推广工具站seo
  • 唐山的做网站的企业什么是网络营销战略
  • 外贸b2c网站源码学生网页制作成品
  • 合肥网站制作企业网站制作多少钱
  • 营销单页网站制作百度建立自己的网站
  • 做网站的服务器怎么选东营网站建设制作
  • 页面设计的简短概念seo技术网
  • 深圳市做网站的企业成都百度快照优化排名
  • 网站正在建设中AV 手机版seo网络推广是什么意思
  • 怎样推广自己做的网站宁波seo企业网络推广
  • 咸阳网站建设哪家好百度一下免费下载安装
  • 免费建设网站领地新闻10 30字
  • 和网站建设签合同广告联盟论坛
  • app定制开发软件商城分身郑州seo外包费用
  • 网站开发有什么seo推广效果
  • vue做的pc线上网站网络营销工具与方法
  • 阿里云做网站可以引流推广的app
  • 网站icp备案号西安网络推广运营公司
  • 动态网站制作教程信息流优化师招聘
  • 如何查看网站域名证书网络营销的未来发展趋势
  • 网站适合用angular做吗数据分析师证书