[易学易懂系列|rustlang语言|零基础|快速入门|]

Posted gyc567

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[易学易懂系列|rustlang语言|零基础|快速入门|]相关的知识,希望对你有一定的参考价值。

[易学易懂系列|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,谢谢!

以上是关于[易学易懂系列|rustlang语言|零基础|快速入门|]的主要内容,如果未能解决你的问题,请参考以下文章

[易学易懂系列|rustlang语言|零基础|快速入门|]

[易学易懂系列|rustlang语言|零基础|快速入门|(11)]

[易学易懂系列|rustlang语言|零基础|快速入门|(14)]

[易学易懂系列|rustlang语言|零基础|快速入门|(12)]

[易学易懂系列|rustlang语言|零基础|快速入门|(13)]

[易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针]