- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
基础语法2
由于rust语法与大部分语言语法差别较大,所以慢一点学习语法
元祖
tuple
- 如果写成这样
let aa = (1i32,true);
- 代表第一个是
i32
类型,第二个是bool类型 - 来看下面代码
- 如果写成这样
1 | rust复制代码fn main() { |
- 其中
a,b
被赋值是使用了模式匹配- 而x,y被赋值是使用了数字索引
- 一般读取枚举,会使用到模式匹配
1 | rust复制代码use std::num::NonZeroU8; |
基本的算术表达式
1 | rust复制代码fn main() { |
代码小规定
- 如果出现连续等于的判断,需要适当的根据语义去增加括号
- 如果下面的代码,
a==b==c
不加括号,编译器就会报错了
- 如果下面的代码,
1 | rust复制代码fn calculate(a: bool,b: bool,c: bool) -> bool { |
if-else
1 | rust复制代码fn func(i: i32) { |
函数
1 | rust复制代码fn add(t : (i32,i32)) -> i32 { |
- 上面函数的变种
1 | rust复制代码fn add((x,y) : (i32,i32)) -> i32 { |
- 当类型转换遇上函数
- add1是传入一个参数
- 而add2是传入一个tuple,两个
i32
类型的变量 - 下面代码,相当于
func
进行了类型转换
1 | rust复制代码fn add1(t : (i32,i32)) -> i32 { |
条件判断配合函数
1 | rust复制代码fn check(x : bool) -> i32 { |
递归之斐波那契
1 | rust复制代码fn fib(i : u32) -> u64 { |
trait
1 | rust复制代码trait Shape { |
- 上面代码可以看出
- 如果有一个
Circle
类型的实例c,我们就可以调用内部的c.area()
- 可以通过
self.r
来访问内部成员
- 如果有一个
本文转载自: 掘金