从高级程序员的角度来看 rust编程入门实战与进阶( 二 )


  • 必须遵守的命名方案
变量和函数/方法只能使用小写字母、数字和下划线,比如snake_case,但数字不能放在开头 。
结构(和其他类型)、枚举(包括枚举值)和trait(但不包括它们的函数/方法)需要以大写字母开头,并且不能包含任何下划线 。
  • 没有增量运算符
实际上有,你可以使用i= 1 。与赋值相同,该表达式将返回赋值后的值(即,将 i 设置为 i1,然后返回 i) 。
没有 i(或者i、i-- 和 --i),因为这些运算符有点混乱 。
你确定如下操作的结果吗(尤其是在没有指定语言的情况下)?
a[ii] = iia[i]
问题在于,直到最近上述运算的实际行为还是未定义的,这意味着不同的编译器(甚至可能是同一个编译器的不同版本)可能会产生不同的行为 。为了解决这个问题并提高代码的可读性(Rust非常重视可读性和冗长,甚至不惜多敲几次键盘),Rust仅支持 i= 1,几乎所有人都知道该表达式的意思是变量i加1,并返回最终结果 。所以,你不必知道 i实际上返回的是原始值(不是新值),而且还会加1 。
此外 , 运算符重载会使用trait,但本文不打算详细讨论 。
  • 几乎所有的东西都是表达式
除了函数调用之外 , 还有 if、while、match 和 for 都是表达式 。
你可以直接使用 if 来代替其他语言中常见的三元运算符:
let var = if something { 1 } else { 2 };
循环会根据break的调用返回结果 。你可以利用它,反复重试某个操作,直到成功 。
从高级程序员的角度来看 rust编程入门实战与进阶

文章插图
变量变量通过 let 声明,并且有作用域 。类型是可选的,Rust 非常擅长推断类型(比 Typescript 更出色) 。
let var: usize = 1;
上述变量定义了一个类型为usize的变量var(usize是一个32或64位的数字 , 具体取决于计算机架构) 。
你可以重复声明变量 。当重复声明某个变量时 , 之前声明的变量就会被删除(除非该变量被引用,在这种情况下只有引用会保留,而原始变量会被删除) , 而且变量的类型也会改变 。
let var = 1;let var = "something";
在默认情况下 , 变量是不可变的 。如果你想修改它们,则需要在 let 之后加上关键字 mut 。
let var = 1;var = 2; // 错误!不可以修改不可变的变量
let mut var = 1;var = 2;
从高级程序员的角度来看 rust编程入门实战与进阶

文章插图
函数fn main(arg: u8) -> u8 { // something arg}
函数的行为几乎与JS一模一样 , 只不过它们并不是数据类型,而且语法上略有不同 。
参数的指定与 Typescript 类似,即key: type 。返回类型通过 -> 指定 。
有趣的是,虽然 Rust 需要分号,但如果最后一个表达式后面的分号忘写了,它会被作为返回值(即使没有 return 关键字) 。
从高级程序员的角度来看 rust编程入门实战与进阶

文章插图
If语句if something {} else {} else if something_else {}
if 语句的使用非常基本,不在此赘述 。
有一点需要注意,如非必要,使用括号实际上是错误的 。你可以利用括号指定执行顺序:
if (something || something_else) && something_other {}
如前所述,if 也可以返回一个值,而该值可用于赋值、参数、返回或其他地方 。

相关经验推荐