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

通州建设局网站门户首页网站建设方案

通州建设局网站,门户首页网站建设方案,制作WordPress主题自适应,网站的建设步骤一、定义结构体类型 语法 struct Name_of_structure {field1: data_type,field2: data_type,field3: data_type, }注意#xff1a; 不同于C#xff0c;Rust的struct语句仅用来定义类型#xff0c;不能定义实例。 结尾不需要;。 每个字段定义之后用 , 分隔。最后一个逗号可…一、定义结构体类型 语法 struct Name_of_structure {field1: data_type,field2: data_type,field3: data_type, }注意 不同于CRust的struct语句仅用来定义类型不能定义实例。 结尾不需要;。 每个字段定义之后用 , 分隔。最后一个逗号可有可无。 例子 struct Site {domain: String,name: String,nation: String,found: u32, }二、定义结构体实例 1.语法 let instance_name Name_of_structure {field1: value1,field2: value2,field3: value3, };Rust受JavaScript影响使用JSON对象的key: value语法定义结构体的实例 例子 let runoob Site {domain: String::from(www.runoob.com),name: String::from(RUNOOB),nation: String::from(China),found: 2013, };2.如果字段名称和变量名称一样可以简化书写 例子 let domain String::from(www.runoob.com); let name String::from(RUNOOB); let runoob Site {domain, // 等同于domain : domain,name, // 等同于name : name,nation: String::from(China),found: 2013, };3.复制现成的实例只修改部分字段可以使用如下语法 let site Site {domain: String::from(www.xx.com),name: String::from(xx),..runoob, };这种语法要求至少重新设定一个字段的值 三、元组结构体 一 元组结构体的形式是元组与元组的区别是它有名字和固定的类型格式。 它的意义是为了处理那些需要定义类型又不想太复杂的简单数据 struct Color(u8, u8, u8); struct Point(f64, f64); let black Color(0, 0, 0); let origin Point(0.0, 0.0);元组结构体的使用方式和元组一样通过 . 和下标来访问 例子 fn main() {struct Color(u8, u8, u8);struct Point(f64, f64);let black Color(0, 0, 0);let origin Point(0.0, 0.0);println!(black ({}, {}, {}), black.0, black.1, black.2);println!(origin ({}, {}), origin.0, origin.1); } 运行结果 black (0, 0, 0) origin (0, 0)二newtype模式 newtype模式是使用元组结构体创建一个新类型这个元组结构体只有一个字段相当于对这个字段类型的封装。 newtype模式的用处 1.newtype模式可以用于确保某值不被混淆 例子 Years和Days结构体都封装了i64值。 struct Years(i64); struct Days(i64); impl Years {pub fn to_days(self) - Days {Days(self.0 * 365)} } impl Days {pub fn to_years(self) - Years {Years(self.0 / 365)} } fn old_enough(age: Years) - bool {age.0 18 } fn main() {let age Years(5);let age_days age.to_days();println!(Old enough {}, old_enough(age));println!(Old enough {}, old_enough(age_days.to_years()));// println!(Old enough {}, old_enough(age_days)); }取消最后一行的注释就会报错。传给old_enough的参数类型必须是Years类型的。 2.为外部类型实现外部trait 参考Rust特性 四、单元结构体 结构体可以没有任何成员称为单元结构体。 struct MyStruct;五、使用结构体 一输出结构体 以Debug方式打印结构体需要实现Debug特性。 实例 #[derive(Debug)] struct Rectangle {width: u32,height: u32, } fn main() {let rect1 Rectangle { width: 30, height: 50 };println!(rect1 is {:?}, rect1); } 输出一整个结构体 rect1 is Rectangle { width: 30, height: 50 }二访问结构体实例的元素 1.只读访问 使用元素访问符也就是点号 ( . ) 语法格式如下 struct_name_instance.field_name范例 struct Employee {name: String,company: String,age: u32 } fn main() {let emp1 Employee {company:String::from(TutorialsPoint),name:String::from(Mohtashim),age:50};println!(Name is :{} company is {} age is {}, emp1.name, emp1.company, emp1.age); } 编译运行结果如下 Name is :Mohtashim company is TutorialsPoint age is 502.修改结构体实例的字段 添加 mut 关键字让它变成可修改的。 范例 struct Employee {name:String,company:String,age:u32 } fn main() {let mut emp1 Employee {company:String::from(TutorialsPoint),name:String::from(Mohtashim),age:50};emp1.age 40;println!(Name is :{} company is {} age is {}, emp1.name, emp1.company, emp1.age); } 编译运行结果如下 Name is :Mohtashim company is TutorialsPoint age is 40三结构体作为函数的参数 例子 //定义一个结构体 struct Employee {name:String,company:String,age:u32 } fn main() {//初始化结构体let emp1 Employee {company:String::from(TutorialsPoint),name:String::from(Mohtashim),age:50}; let emp2 Employee{company:String::from(TutorialsPoint),name:String::from(Kannan),age:32};//将结构体作为参数传递给displaydisplay(emp1);display(emp2); } fn display( emp: Employee){println!(Name is :{} company is {} age is {}, emp.name, emp.company, emp.age); } 编译运行结果如下 Name is :Mohtashim company is TutorialsPoint age is 50 Name is :Kannan company is TutorialsPoint age is 32四结构体实例作为函数的返回值 语法格式 struct My_struct {} fn function_name([parameters]) - My_struct {// 其它的函数逻辑return My_struct_instance; }范例 fn main() {let emp1 Employee{company:String::from(TutorialsPoint),name:String::from(Mohtashim),age:50};let emp2 Employee {company:String::from(TutorialsPoint),name:String::from(Kannan),age:32};let elder who_is_elder(emp1,emp2);println!(elder is:);display(elder); } //接受两个Employee的实例作为参数并返回年长的那个 fn who_is_elder (emp1:Employee,emp2:Employee)-Employee {if emp1.ageemp2.age {return emp1;} else {return emp2;} } // 显示结构体的所有元素 fn display( emp: Employee) {println!(Name is :{} company is {} age is {},emp.name,emp.company,emp.age); } // 定义一个结构体 struct Employee {name:String,company:String,age:u32 } 编译运行结果如下 elder is: Name is :Mohtashim company is TutorialsPoint age is 50六、结构体方法 关联函数是与一个类型相关联的函数。相当于成员函数。 如果关联函数的第一个参数名为 self则此关联函数称为方法。 方法和函数的区别就是方法是用来操作结构体实例的而函数则不是。 为了方便我们称方法为成员方法关联函数我们称为成员函数。 一定义 1.成员方法 如果你学习过一些面向对象的语言那你一定很清楚函数一般放在类定义里并在函数中用this表示所操作的实例。 结构体方法的第一个参数必须是 self不需指定类型因为self是关键字。 与 C不同的是Rust中的结构体方法只能定义在结构体的外面。 使用 impl 关键字定义结构体语法格式如下 struct My_struct {} impl My_struct {// 定义一个方法fn method_name(self[,other_parameters]) {//方法的具体逻辑代码} }结构体impl块可以写多次效果相当于它们内容的拼接 结构体方法内部访问结构体字段 使用 self. 来访问结构体的元素。 例子 struct My_struct {age: u32 } impl My_struct {//定义一个方法fn method_name([other_parameters]) {self.age 28;println!({},self.age);//其它的具体逻辑代码} }2.成员函数 成员函数没有 self参数。 语法格式如下 impl Structure_Name {fn method_name(param1: datatype, param2: datatype) - return_type {// 方法内部逻辑} }例子 #[derive(Debug)] struct Rectangle {width: u32,height: u32, } impl Rectangle {fn create(width: u32, height: u32) - Rectangle {Rectangle { width, height }} } fn main() {let rect Rectangle::create(30, 50);println!({:?}, rect); } 运行结果 Rectangle { width: 30, height: 50 }二调用 1.调用成员方法 方法可以使用方法调用操作符(.)来调用 语法格式为 My_struct.method_name([other_parameters])注意在调用结构体方法的时候不需要填写self这个参数的传递Rust编译器会 偷偷的 帮我们完成。 实例 struct Rectangle {width: u32,height: u32, } impl Rectangle {fn area(self) - u32 {self.width * self.height} } fn main() {let rect1 Rectangle { width: 30, height: 50 };println!(rect1s area is {}, rect1.area()); } 输出结果 rect1s area is 15002.调用成员函数 直接通过结构体名调用而无需实例。 使用路径来调用 语法格式如下 structure_name::method_name(v1,v2)范例 //声明结构体Point struct Point {x: i32,y: i32, } impl Point {fn get_instance(x: i32, y: i32) - Point {Point { x: x, y: y }}fn display(self){println!(x {} y{},self.x,self.y );} } fn main(){let p1 Point::get_instance(10,20);p1.display(); } 编译运行结果如下 x 10 y20
http://www.w-s-a.com/news/869720/

相关文章:

  • 网站建设问题调查常州百度推广代理公司
  • net网站开发学习谷歌优化培训
  • 企业网站公众号广东网站建设方便
  • 2008r2网站建设张店网站建设方案
  • 企业网站首页学生做的网站成品
  • 网站开发 架构设计企业信息管理系统的组成不包括
  • 网站维护模式网页传奇游戏平台排行
  • 企业网站改自适应蛋糕方案网站建设
  • 网站开发技术职责网站升级中html
  • 天网网站建设百度权重高的网站
  • 明年做哪些网站致富网站站长 感受
  • 东莞营销网站建设优化怎么做微信网站推广
  • 网站建设一个多少钱php网站服务器怎么来
  • 引流用的电影网站怎么做2012服务器如何做网站
  • 什么网站可以做推广广州安全信息教育平台
  • 网站开发具备的相关知识wordpress简约文字主题
  • asp网站伪静态文件下载seo外包公司哪家好
  • 淘宝客网站根目录怎么建个废品网站
  • 网站备案更改需要多久百度免费网站空间
  • 外发加工是否有专门的网站wordpress主页 摘要
  • 企业网站优化系统浙江建设信息港证书查询
  • 很多年前的51网站如何做跨境电商需要哪些条件
  • 网站建设中 请稍后访问互联网营销设计
  • 软文网站名称用户浏览网站的方式
  • 大兴模版网站搭建哪家好网站建设与管理管理课程
  • 四川成都网站制作微信广告平台推广
  • 网站价格网页制作网站开发实训步骤
  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力