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

· · 1806 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

[易学易懂系列|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语言|零基础|快速入门|(6)]

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1806 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传