[易学易懂系列|rustlang语言|零基础|快速入门|(6)]
有意思的基础知识
Functions
我们今天再来看看函数。
在Rust,函数由关键词:fn来定义。
如果有参数,必须定义参数的数据类型。
一般情况下,函数返回元组( tuple )类型,如果要返回特定的类型,一般要用符号:
->
来定义。
请看代码如下:
1.main函数:
fn main() {
println!("Hello, world!");
}
2.传递参数:
fn print_sum(a: i8, b: i8) {
println!("sum is: {}", a + b);
}
3.有返回值:
/ 01. Without the return keyword. Only last expression returns.
fn plus_one(a: i32) -> i32 {
a + 1
// There is no ending ; in the above line. It means this is an expression which equals to `return a+1;`
}
// 02. With the return keyword.
fn plus_two(a: i32) -> i32 {
return a + 2; // Returns a+2. But, this's a bad practice.
// Should use only on conditional returns, except in the last expression
}
4.函数指针,作为数据类型:
// 01. Without type declarations
let b = plus_one;
let c = b(5); //6
// 02. With type declarations
let b: fn(i32) -> i32 = plus_one;
let c = b(5); //6
闭包:
1.闭包,即匿名函数或lambda函数。
2.参数类型与返回值,是可选的。
闭包,一句话来说,就是特殊的函数。
首先我们来看看正常函数:
fn main() {
let x = 2;
println!("{}", get_square_value(x));
}
fn get_square_value(x: i32) -> i32 {
x * x
}
然后,我们用闭包来改写:
fn main() {
let x = 2;
let square = |x: i32| -> i32 { // Input parameters are passed inside | | and expression body is wrapped within { }
x * x
};
println!("{}", square(x));
}
进一步简写:
fn main() {
let x = 2;
let square = |x| x * x; // { } are optional for single-lined closures
println!("{}", square(x));
}
以上就是Rust的函数基本知识。
以上,希望对你有用。
如果遇到什么问题,欢迎加入:rust新手群,在这里我可以提供一些简单的帮助,加微信:360369487,注明:博客园+rust
本人精通java高并发,DDD,微服务等技术实践,以及python,golang技术栈。 本人姓名郭莹城,坐标深圳,前IBM架构师、咨询师、敏捷开发技术教练,前IBM区块链研究小组成员、十四年架构设计工作经验,《区块链核心技术与应用》作者之一, 现有成熟团队提供区块链开发相关业务(公链,交易所,钱包,Dapp,智能合约)。 工作微信&QQ:360369487,交易所开发与区块链钱包开发业务,加我注明:博客园+开发,想学习golang和rust的同学,也可以加我微信,备注:博客园+golang或博客园+rust,谢谢!
有疑问加站长微信联系(非本文作者)