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

网站首页设计有限公司微信广告平台

网站首页设计有限公司,微信广告平台,国家车辆保险网站,wordpress登录短信验证dyn - 动态分发 trait 对象 dyn是关键字,用于指示一个类型是动态分发(dynamic dispatch),也就是说,它是通过trait object实现的。这意味着这个类型在编译期间不确定,只有在运行时才能确定。 practice tr…

dyn - 动态分发 trait 对象

dyn是关键字,用于指示一个类型是动态分发(dynamic dispatch),也就是说,它是通过trait object实现的。这意味着这个类型在编译期间不确定,只有在运行时才能确定。

  • practice

trait object实现多态性。
假设有一个几何图形的类层次结构,例如圆形(Circle)和矩形(Rectangle),每种几何图形都有一个计算面积的方法。定义trait Shape来表示这个特征,并在每个几何图形中实现这个trait。

trait Shape {fn area(&self) -> f64;
}struct Circle {radius: f64,
}impl Shape for Circle {fn area(&self) -> f64 {std::f64::consts::PI * self.radius * self.radius}
}struct Rectangle {width: f64,height: f64,
}impl Shape for Rectangle {fn area(&self) -> f64 {self.width * self.height}
}

现在编写一个函数,可以计算不同类型几何图形的总面积。我们可以使用trait object来实现这个函数:

fn total_area(shapes: &[&dyn Shape]) -> f64 {let mut total = 0.0;for shape in shapes {total += shape.area();}total
}

&[&dyn Shape]类型的参数来接受几何图形的数组。数组中的每个元素都是一个对实现Shape trait的具体类型的引用。使用for循环遍历这个数组,并对每个元素调用area方法,计算它的面积,并将结果累加到总面积中。

创建一些具体的几何图形实例,并将它们传递给total_area函数,以计算它们的总面积:

fn main() {let shapes: Vec<&dyn Shape> = vec![&Circle { radius: 1.0 },&Rectangle { width: 3.0, height: 4.0 },//&Circle { radius: 1.5 },];let total = total_area(&shapes);println!("Total area: {}", total);
}

输出结果正确:
在这里插入图片描述

http://www.hengruixuexiao.com/news/41976.html

相关文章:

  • 网站栏目关键词视频专用客户端app
  • wordpress 雪花插件郑州粒米seo顾问
  • 重庆做网站的程序员待遇今日军事新闻头条打仗
  • 点子网站制作整合营销传播成功案例
  • 做电商网站需要多少钱seo推广的公司
  • 做网站公司 信科网络开封网络推广哪家好
  • 网站项目根据什么开发站长工具端口
  • 企业网站设计的要求中国搜索引擎排行榜
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版体验营销策划方案
  • 动态网站建设软件合川网站建设
  • 全屋定制十大名牌价目表湖南seo快速排名
  • 自贡做网站的公司智能搜索引擎
  • 征婚交友网站开发设计友情链接网站大全
  • 神州网站制作软件公司
  • wordpress flash插件微信搜一搜seo优化
  • buyao 学网站开发百度小说排行榜风云榜
  • 杭州拱墅网站建设创建一个网站需要什么
  • 网站建设找盛誉网络网站排名优化软件
  • 微信里的小程序占内存吗网站seo优化免费
  • 温州公司网站开发学电脑培训班
  • 网站制作业务域名权重
  • 苏州网站建设招聘十大网站平台
  • 装修公司网站asp源码网络推广的细节
  • asp网站生成静态长岭网站优化公司
  • 网站定制的销售情况seo关键词优化排名公司
  • 做网站可以用什么主题常用的网络推广方法有
  • 网站建设需要那些人站长工具百科
  • 泰安房产信息网谷歌seo推广
  • 公司网站建设代码都写完了百度公司排名多少
  • seo做的最好的网站排行品牌推广外包公司