第二节、函数
函数
函数的定义
fn main() {
println!("Hello, world!");
another_function(); //调用
}
// fn 定义
fn another_function() {
println!("Another function.");
}
这里有一个细节,自己定义的函数调用的时候没有"!",而println后面有一个"!",因为println是一个宏而不是一个函数。 后面学到的还有write,vec 都是一个宏,都带有"!"。
函数的参数
fn main() {
// 调用时传入参数,5
another_function(5);
}
//在函数的定义里定义了一个参数x,为整型
fn another_function(x: i32) {
println!("The value of x is: {}", x); //此时x为调用时传入的值,本例为5
}
定义2个参数
fn main() {
print_labeled_measurement(5, 'h');
}
fn print_labeled_measurement(value: i32, unit_label: char) {
println!("The measurement is: {}{}", value, unit_label);
}
结果:
The measurement is: 5h
语句和表达式
语句没有返回值,而表达式可以。
//语句
let x = 5;
//表达式
{
let mut x = 6;
x +=2;
}
//let y = (let x=5); //报错
let y = {
let x = 3;
x + 1
};
println!("The value of y is: {}", y);
表达式返回 x+1,也就是4。
函数返回值
fn five() -> i32 {
5
}
fn main() {
let x = five();
println!("The value of x is: {}", x);
}
很多编程语言 都是 return 5
,而rust不是。
-> i32
,表示函数的返回值是i32类型的。
- 再次说明表达式和语句
fn main() {
let x = plus_one(5);
println!("The value of x is: {}", x);
}
fn plus_one(x: i32) -> i32 {
x + 1
}
fn main() {
let x = plus_one(5);
println!("The value of x is: {}", x);
}
fn plus_one(x: i32) -> i32 {
x + 1;
}
差别在 ";", 有分号就是语句了。