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

用哪个软件做网站12388网站建设管理情况

用哪个软件做网站,12388网站建设管理情况,网件路由器设置,马鞍山市重点工程建设管理局网站标题 一、泛型数据的引入二、改写为泛型函数三、结构体/枚举中的泛型定义四、方法定义中的泛型 一、泛型数据的引入 下面是两个函数,分别用来取得整型和符号型vector中的最大值 use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64…

标题

  • 一、泛型数据的引入
  • 二、改写为泛型函数
  • 三、结构体/枚举中的泛型定义
  • 四、方法定义中的泛型

一、泛型数据的引入

下面是两个函数,分别用来取得整型和符号型vector中的最大值

use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64{let mut max = src[0];for &item in src.iter(){if item > max {max = item;}}max
}fn get_max_int_value_from_vector(src: &[i32]) -> i32{let mut max = src[0];for &item in src.iter(){if item > max {max = item;}}max
}
fn main() {let x = vec![12, 21, 78, 56, 77];let y = vec![11.5, 100.3, 1.0, 90.1];println!("max x: {}", get_max_int_value_from_vector(&x));   //max x: 78println!("max y: {}", get_max_float_value_from_vector(&y)); //max y: 100.3
}
  • 只看函数内容,两个函数完成相同
  • 不同的地方在于函数名、返回值和参数
  • 返回值和参数又具有很大的关联性;
  • 这就造成了函数冗余

二、改写为泛型函数

函数get_max_int_value_from_vectorget_max_float_value_from_vector完全可以改写成一个泛型函数,如

fn get_max_value_from_vector<T>(src: &[T]) -> T{}

则代码变成

fn get_max_value_from_vector<T>(src: &[T]) -> T{let mut max = src[0];for &item in src.iter(){if item > max {max = item;}}max
}
fn main() {let x = vec![12, 21, 78, 56, 77];let y = vec![11.5, 100.3, 1.0, 90.1];println!("max x: {}", get_max_value_from_vector(&x));   //max x: 78println!("max y: {}", get_max_value_from_vector(&y)); //max y: 100.3
}

编译报错
在这里插入图片描述

  • 解决方法在5.7 使用trait bounds修复get_max_value_from_vector的错误中进行。

三、结构体/枚举中的泛型定义

  • 下面将坐标值的x,y都改成泛型
struct Point<T>{x: T,y: T,
}enum Option<T> {Some(T),None,
}//两个泛型
enum Result<T, E> {Ok(T),Err(E),
}

四、方法定义中的泛型

struct Point<T>{x: T,y: T,
}impl<T> Point<T>{fn x(&self) -> &T{&self.x}
}
fn main() {let p = Point{x:5, y:10};println!("p.x = {}", p.x());   //p.x = 5
}
  • 在impl后面声明 T,这样就可以在Point<T>上实现的方法中使用;
  • 在impl后声明泛型T ,Rust 就知道Point的尖括号中的类型是泛型而不是具体类型;

下面展示了一个没有在impl 之后(没有尖括号)声明泛型的例子,这里使用了一个具体类型

impl Point<f32> {fn distance_from_origin(&self) -> f32 {(self.x.powi(2) + self.y.powi(2)).sqrt()}
}
  • 代码计算点实例与坐标 (0.0, 0.0) 之间的距离;
  • 这段代码意味着Point<f32> 类型会有一个方法distance_from_origin,
  • 其他不是 f32 类型的Point<T> 实例则没有定义此方法;

结构体定义中的泛型类型参数并不总是与结构体方法签名中使用的泛型是同一类型。
下例的结构体Point<T, U> 上定义了一个方法mixup。这个方法获取另一个 Point 作为参数,而它可能与调用 mixup 的 self 是不同的 Point 类型。这个方法用 self 的 Point 类型的 x 值(类型 T)和参数的 Point 类型的 y 值(类型 W)来创建一个新 Point 类型的实例

struct Point<T, U> {x: T,y: U,
}impl<T, U> Point<T, U> {fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {Point {x: self.x,y: other.y,}}
}fn main() {let p1 = Point { x: 5, y: 10.4 };let p2 = Point { x: "Hello", y: 'c'};let p3 = p1.mixup(p2);println!("p3.x = {}, p3.y = {}", p3.x, p3.y); // p3.x = 5, p3.y = c
}
  • p1是一个有 i32 类型的 x(其值为 5)和 f64 的 y(其值为 10.4)的 Point;
  • p2则是一个有着字符串 slice 类型的 x(其值为 “Hello”)和 char 类型的 y(其值为 c)的 Point;
  • 在p1上以 p2 作为参数调用 mixup 会返回一个 p3,它会有一个 i32 类型的 x;
  • x 来自 p1,并拥有一个 char 类型的 y,y 来自 p2;
http://www.yayakq.cn/news/71924/

相关文章:

  • 域客士营销型单页网站程网络营销的主要推广方式
  • 太原网站推广教程目前网络营销的主要方式
  • 网站推广 经典案例海南网站备案
  • 最好的扁平化网站wordpress导购
  • 广州 营销型网站建设塑胶包装东莞网站建设
  • 音乐自助建站太原seo
  • 青岛网站优化快速排名代理记账公司收费标准
  • 中企动力做网站多少钱网站开发图标下载
  • 有做网站需求的客户seo怎么收费的
  • 深圳 网站开发建网站学什么
  • 网站群维护方案去哪找做塑料的网站
  • 网站建设的注意事项重生做门户网站的小说
  • 网站建设 河南响应式网站 做搜索推广缺点
  • 男女宾馆做爰视频网站古镇网站建设公司
  • 建设部166号令住建部网站建网站能赚钱吗
  • 丹东建设安全监督网站国际4a广告公司排名
  • 东莞怎么建设网站公司中秋节网页设计代码
  • 网站有哪些元素组成成都网站建设费用
  • 家具行业网站建设怎么建设自己网站首页
  • 平板电脑 做网站开发做家具有那个网站好
  • 太原顶呱呱做网站地址电话一些房产网站是怎么做的
  • 想做国外的客户做网站怎么弄沧州网站建设 凯航
  • 用网站做的人工智能工业互联网平台有哪些
  • 郑州建设工程信息网站怎么注册一个公司网站
  • 常见的网站推广方式有哪些互动科技 网站建设
  • 网站搭建怎么弄的网页和网站区别
  • 携程网站的会计工作怎么做襄樊最好网站建设价格
  • 拖拽式可视化编辑网站百度商桥在网站
  • 石家庄兼职做网站云服务器和网站空间
  • 网站做淘客wordpress 响应时间