赞
踩
第三章Common Programming Concepts
变量 默认immutable 不能更改值 要改为mutable才能更改
let y = 5
y = 7 //会产生编译报错
//正确的方法
let mut y = 6
y = 7
because it makes the code more convenient to write than if it had only immutable variables.
一直保持 immutable的状态
并且定义的时候要声明变量类型
可以对同一个变量多次赋值,要用上let关键字,后面的值会替代前面的值。
fn main() {
let x = 5;
let x = x + 1; \\x = 6
let x = x * 2; \\ x = 12
println!("The value of x is: {}", x);
}
编译时必须有类型
int、float、bool、char 四种类型
int的默认类型是i32
int溢出说明
编译过程中:
debug模式,Rust会协助检查
release模式,Rust 会二进制补码
float默认是f64
bool 占1 bit
char 用单引号’ ’ (而String用双引号 " " ) 占4bit
元组 是一系列不同数据类型的组合
一旦确定,大小不能改变
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup; //解构
let (x, y, z) = tup 分别给x,y,z 赋值,这个过程被称为解构
也可以使用
let x = tup.0;
这种方式
同样是固定长度
较特殊的一种表示
let a = [3; 5];
最终形成5个3组成的数组
采用用蛇形命名法:全部小写单词,中间连字符连接
参数定义必须有类型
statement(语句)和expression(表达式)区别
__ | __ |
---|---|
语句 | 执行操作,没有返回值 |
表达式 | 产生结果 |
Rust is an expression-based language
因此,函数返回值需要按照表达式返回
如
fn plus(x: i32,y:i32)-> i32{
x+y //或 return x+y 或 return x+y ;
}
x = y = 6
这样的表达式不能再Rust里出现,let x = (let y = 6)
就会报错,因为let y = 6 是语句,并不会返回某种值。
let number = if condition { 5 } else { 6 };
// let number = if condition { 5 } else { "SIX" }; 是错误的
与 if类似,loop结果也可用于 let 赋值
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
Rust采用以下风格
for i in 1..10{
println!("{}",i);
}
let x = [0, 1, 2, 3, 100];
for element in x.iter() { // or use &x
println!("element: {}", element);
}
练习2
use std::io; fn F(n :u32)->u32{ if n == 1 || n == 2 { return 1; }else{ F(n-1)+F(n-2) } } fn main() { let mut input = String::new(); io::stdin() .read_line(&mut input) .expect("error"); let n :u32 = input.trim().parse().expect("error"); let mut n = 8; while n!=0 { let re = F(n); println!("{}",re); n -= 1; } }
另外一道题还挺有意思,不过之前没有听说过
print the lyrics to the Christmas carol “The Twelve Days of Christmas,” taking advantage of the repetition in the song.
网上大多是Java 实现的,我用Rust改写一下,单独列一篇。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。