使用as
[maisipu@192 src]$ cargo run
Compiling learnrust v0.1.0 (/home/maisipu/learn/learnrust)
Finished dev [unoptimized + debuginfo] target(s) in 0.57s
Running `/home/maisipu/learn/learnrust/target/debug/learnrust`
11,11
fn main() {
let x:f32=11.111;
let y:f64=11.1111111111111;
println!("{},{}",x as i32 ,y as i8);
}
fn main(){
let x=11.111_f32;
let y=11.1111111111111_f64;
println!("{},{}",x,y);
}
[maisipu@192 src]$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/maisipu/learn/learnrust/target/debug/learnrust`
11.111,11.1111111111111
[maisipu@192 src]$
char为字符类型,用32位值形式表示unicode字符。
fn main(){
let x='你';
let y:char='z';
println!("{},{}",x,y);
}
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/maisipu/learn/learnrust/target/debug/learnrust`
你,z
第一种形式列出了数组中的每个值。
语法是一个逗号分隔的统一类型的表达式列表,用方括号括起来。这将生成一个数组,其中按写入顺序包含这些值中的每一个。
第二种形式的语法是由方括号中的分号(;)分隔的两个表达式。
前面的表达式;称为重复操作数。后面的表达式;称为长度操作数。它必须具有usinize类型,并且是常量表达式,例如文字或常量项。此形式的数组表达式创建一个长度为长度操作数值的数组,每个元素都是重复操作数的副本。
当重复操作数是常量项时,将按长度操作数的值对其求值。如果该值为0,则根本不计算常量项。对于不是常量项的表达式,只计算一次,然后将结果复制到长度操作数的值次。
fn main(){
let y=[11,22,33];
for i in y{
println!("{}",i);
}
let z=[111;9];
println!("{:?}",z);
}
11
22
33
[111, 111, 111, 111, 111, 111, 111, 111, 111]
元素的每个类型可以不同
元组不能迭代访问
fn main(){
let y=(11,22,33);
for i in y{
println!("{}",i);
}
}
上面代码是错误的,因为元组的元素类型不一定会一致
与字段访问表达式不同,元组索引表达式可以是调用表达式的函数操作数,因为它不能与方法调用混淆,因为方法名称不能是数字。
尽管数组和切片也有元素,但必须使用数组或切片索引表达式或切片模式来访问它们的元素。
fn main(){
let y=(1,22,333);
println!("{},{},{}",y.0,y.1,y.2);
let z=(111,"asddsaddaa");
println!("{:?}",z);
}
[maisipu@192 src]$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/maisipu/learn/learnrust/target/debug/learnrust`
1,22,333
(111, "asddsaddaa")
[maisipu@192 src]$ cat main.rs
fn get_sum(nums:(i32,i32,i32))->(i32,i32){
let mut result:i32=0;
result=result+nums.0+nums.1+nums.2;
(result,result/3)
}
fn main(){
let y=(1,22,333);
println!("{:?}",get_sum(y));
}
[maisipu@192 src]$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/maisipu/learn/learnrust/target/debug/learnrust`
(356, 118)
[maisipu@192 src]$