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

备案时的网站建设方案书开发软件公司

备案时的网站建设方案书,开发软件公司,建设银行网上银行官方网站,柑桔种植服务网站开发一、定义结构体类型 语法 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/529359/

相关文章:

  • 甘肃省两学一做专题网站广东外发加工网
  • 用python导入wordpress公司网络优化方案
  • 效益成本原则网站建设wordpress 上传rar
  • 大连网站制作 连城传媒渠道网络公司官网
  • 电影天堂网站用什么程序做的wordpress 添加链接地址
  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言
  • 彩票网站建设要多少钱西安英文网站建设
  • 静态班级网站印象云笔记 wordpress
  • 网站表单及商品列表详情模板永川网站制作联系电话
  • 网站建设与维护难不难网络服务机构的网站
  • 用三权重的网站做友链有好处没企业年金怎么查询
  • 工行网站跟建设网站区别wordpress加入地图
  • 网站的风格对比信息表广告门
  • 教育网站建设毕业设计说明书门户网站模式
  • 洛阳霞光建设网站html做分模块的网站
  • 域名建议网站wordpress 伪静态html
  • 网站风格化设计方案免费模式营销案例
  • 凤翔网站建设农村建设自己的网站首页
  • 怎样用网站做单笔外贸建筑设计公司合作加盟
  • 建网站买的是什么网站开发三层结构
  • wordpress图纸管理网站2345网址导航智能主版
  • 想调用等三方网站数据该怎么做培训课程
  • 高端营销网站建设wordpress咨询
  • 网站搜索框如何做创业怎么做网站
  • 网站手机版管理链接产品推广找哪家公司
  • vuejs 可做网站吗蜘蛛互联网站建设
  • 沈阳网站备案查询17zwd一起做业网站
  • 石家庄大型公司建站广州设计网站培训学校
  • 如何让百度收录中文域名网站wordpress前台管理评论