赞
踩
Structure
介绍了基本的一些概念
几个点记录下
术语:
struct Usr {
name :String,
age : u32,
}
结构体里面的变量部分被称为 字段(field)
注意: 实例化的时候字段不用考虑顺序
fn get_name(name :String) -> Usr{
struct Usr {
name //不用 name :name了
age : 0,
}
}
let user1 = Usr {
name :"asd",
..user0
}
struct data(i32,i32,i32);
let data1 = data(1,2,3);
可以用 data.0
访问值
函数传 数字,传元组,传结构体
结构体的输出,默认情况下加上 #[derive(Debug)]
后,占位直接用{:?}
(一行输出)或{:#?}
(展开多行输出)
Rust 也有和其他语言类似的 method
方法
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
方法中有参数 self,但在调用的时候不用显示的添加内容re1.area()
就行了,
选择情况
情况 | 意义 |
---|---|
self | 获取所有权 |
&self | 只读,不改,不获取所有权 |
& mut self | 读写 |
impl 下的函数不必都有 self参数,这类函数叫做联合函数而不叫方法。
通常用于返回新的实例。
比如:
#[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle { fn square(size: u32) -> Rectangle { Rectangle { width: size, height: size, } } } fn main() { let sq = Rectangle::square(3); }
利用::
来调用联合函数,比如String::form("hello")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。