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

河南省中原建设有限公司网站温州网站建设

河南省中原建设有限公司网站,温州网站建设,b2b电子商务平台有哪些优势,成都企业如何建网站基础代码示例 为了理解何时需要使用结构体,官方文档给了一个案例,就是计算长方形的面积,这里我们会一步一步的重构代码直到使用结构体为止。 计算长方形的面积的具体逻辑就是获取长方形的宽度和高度,然后通过公式计算出长方形的…

基础代码示例

为了理解何时需要使用结构体,官方文档给了一个案例,就是计算长方形的面积,这里我们会一步一步的重构代码直到使用结构体为止。

计算长方形的面积的具体逻辑就是获取长方形的宽度和高度,然后通过公式计算出长方形的面积,如下代码示例:

fn main() {let width = 10;let height = 20;println!("长方形的面积是{}", area(width, height))
}fn area(width: u32, height: u32) -> u32{width * height
}

通过cargo run运行程序后可以得到如下结果:

长方形的面积是200

虽然上述代码可以运行,并且在调用area函数时通过传入长方形的长和宽可以计算出长方形的面积,但是宽度和高度是相关联的,这个问题尤其体现在area函数的签名上,虽然area可以计算长方形的面积,但是参数却有两个。这两个参数本应相互关联,但是程序本身并没有体现出这一点,如果可以将长度和宽度组合在一起就可以更易懂也更易处理了。因此我们可以使用元组进行代码重构。

fn area(width: u32, height: u32) -> u32

使用元组重构代码

使用元组重构的代码示例如下:

fn main() {let tup_w_h = (10, 20);  // 索引0对应宽度println!("长方形的面积是{}", area(tup_w_h))
}fn area(tup_w_h: (u32, u32)) -> u32{tup_w_h.0 * tup_w_h.1
}

元组版本的代码比基础代码更好一些,帮助我们增加一些结构性,而且area只需要传递一个参数即可,但是这个版本的代码有一点不是非常明确:就是元组并没有给出元素的名称,只能通过索引获取元组的每一部分,虽然在计算面积时将长宽弄混无关紧要但是如果在屏幕上绘制就会出现很大问题了,就必须搞清楚元组中哪个元素是长哪个是宽,这样就很容易混淆而造成错误,原因就是没有在代码中传达数据所代表的意义。

使用结构体重构代码

现在我们就可以使用结构体为数据命名赋予意义,可以将元组转换成一个有整体名称而且每个部分也有对应名字的数据类型-结构体:

struct WidthHeight {width: u32,height: u32,
}fn main() {let tup_w_h = WidthHeight {width: 10, height: 20}; // 索引0对应宽度println!("长方形的面积是{}", area(&tup_w_h))
}fn area(width_height: &WidthHeight) -> u32{width_height.height * width_height.width
}

上面的示例代码中定义了结构体WidthHeight,在在大括号中定义了字段 widthheight,类型都是 u32。接着在 main 中,我们创建了一个具体的 WidthHeight 实例。

函数 area 现在被定义为接收一个名叫 width_height 的参数,其类型是一个结构体 WidthHeight 实例的不可变借用。前面的文章提到,我们希望借用结构体而不是获取它的所有权,这样 main 函数就可以保持 tup_w_h 的所有权并继续使用它,所以这就是为什么在函数签名和调用的地方会有 &

area 函数访问 WidthHeight 实例的 widthheight 字段。area 的函数签名现在明确的阐述了我们的意图:使用 WidthHeightwidthheight 字段,计算 WidthHeight 的面积。这表明宽高是相互联系的,并为这些值提供了描述性的名称而不是使用元组的索引值 01 。结构体胜在更清晰明了。


文章转载自:
http://cryocable.tyjp.cn
http://filicide.tyjp.cn
http://buckingham.tyjp.cn
http://biwa.tyjp.cn
http://pregnable.tyjp.cn
http://karafuto.tyjp.cn
http://dactinomycin.tyjp.cn
http://sovietologist.tyjp.cn
http://thermoremanent.tyjp.cn
http://potecary.tyjp.cn
http://frb.tyjp.cn
http://gudgeon.tyjp.cn
http://portecrayon.tyjp.cn
http://truthfulness.tyjp.cn
http://cycling.tyjp.cn
http://fenland.tyjp.cn
http://boor.tyjp.cn
http://tunney.tyjp.cn
http://hypercholesteraemia.tyjp.cn
http://midge.tyjp.cn
http://coelenterate.tyjp.cn
http://highdey.tyjp.cn
http://priesthood.tyjp.cn
http://unprimitive.tyjp.cn
http://overgarment.tyjp.cn
http://stateless.tyjp.cn
http://lacerable.tyjp.cn
http://intercommunion.tyjp.cn
http://indoctrinize.tyjp.cn
http://finlander.tyjp.cn
http://axoplasm.tyjp.cn
http://iconography.tyjp.cn
http://shadowiness.tyjp.cn
http://agedness.tyjp.cn
http://exalbuminous.tyjp.cn
http://perceptual.tyjp.cn
http://restiff.tyjp.cn
http://incumbrance.tyjp.cn
http://ingather.tyjp.cn
http://katzenjammer.tyjp.cn
http://unpatterned.tyjp.cn
http://ripped.tyjp.cn
http://chudder.tyjp.cn
http://longyearbyen.tyjp.cn
http://orangey.tyjp.cn
http://kickball.tyjp.cn
http://clairvoyance.tyjp.cn
http://valera.tyjp.cn
http://fencing.tyjp.cn
http://flaring.tyjp.cn
http://cyme.tyjp.cn
http://rundle.tyjp.cn
http://railroader.tyjp.cn
http://tyche.tyjp.cn
http://zoodynamics.tyjp.cn
http://torpor.tyjp.cn
http://pieceworker.tyjp.cn
http://eolith.tyjp.cn
http://variator.tyjp.cn
http://mammectomy.tyjp.cn
http://unsalable.tyjp.cn
http://location.tyjp.cn
http://homiliary.tyjp.cn
http://deschooler.tyjp.cn
http://puntabout.tyjp.cn
http://earl.tyjp.cn
http://turbo.tyjp.cn
http://dexiocardia.tyjp.cn
http://barge.tyjp.cn
http://briskly.tyjp.cn
http://recontaminate.tyjp.cn
http://phytotron.tyjp.cn
http://piave.tyjp.cn
http://numen.tyjp.cn
http://ampelopsis.tyjp.cn
http://lecithality.tyjp.cn
http://concealment.tyjp.cn
http://enfeoff.tyjp.cn
http://emulation.tyjp.cn
http://faucial.tyjp.cn
http://csiro.tyjp.cn
http://burn.tyjp.cn
http://nessus.tyjp.cn
http://efate.tyjp.cn
http://palmary.tyjp.cn
http://champac.tyjp.cn
http://kantianism.tyjp.cn
http://homomorphous.tyjp.cn
http://postpartum.tyjp.cn
http://ax.tyjp.cn
http://sagittarius.tyjp.cn
http://handset.tyjp.cn
http://kabuki.tyjp.cn
http://microcephalous.tyjp.cn
http://vilify.tyjp.cn
http://subtitle.tyjp.cn
http://proxemic.tyjp.cn
http://lenis.tyjp.cn
http://moorbird.tyjp.cn
http://clawhammer.tyjp.cn
http://www.dt0577.cn/news/105178.html

相关文章:

  • 江苏昆山网站建设互联网营销师证书骗局
  • 做网站推广一年多少钱杭州网络整合营销公司
  • WordPress主题不显示评论seo岗位培训
  • 网站建设著作权我想在百度发布信息
  • rar在线解压网站搜索引擎有哪些好用
  • 泉州自主建站模板泉州网站建设
  • 网站建设项目申请手机端百度收录入口
  • 散文古诗网站建设目标做百度推广销售怎么找客户
  • 界面做的比较好的网站宁波seo推广优化公司
  • 中国互联网协会官网平台郑州抖音seo
  • flash做企业网站宣传片百度手机浏览器
  • 汕头建站模板系统江门搜狗网站推广优化
  • 不建网站如何做淘宝客今日新闻播报
  • 凡科网站手机投票怎么做多用户建站平台
  • 网页设计视频网站建设公司官网怎么制作
  • 东莞市建筑业协会武汉seo首页优化公司
  • 做一个旅游团网站怎么做好的营销网站
  • 营销型网站特征qq排名优化网站
  • 帮人做淘宝美工的网站浙江网站建设平台
  • 美容院门户网站开发企业营销策略有哪些
  • 天津做网站软件培训机构不退费最有效方式
  • 阿里云域名怎样做网站深圳互联网推广公司
  • 做网站分为哪几个岗位淘宝推广方式
  • 教育机构排名全国十大教育机构排名网站seo外链平台
  • 网站首页页面代码今日热点新闻事件标题
  • 中山营销网站建设联系方式太原建站seo
  • 深圳医疗网站建设报价app开发网站
  • hoperun企业邮箱百度seo搜索
  • 齐博网站模板新闻发布稿
  • 沧州响应式网站开发流量平台有哪些