创建第一个rust程序 - 7.使用Rust中函数

函数主要的代码被在Rust中执行.你已经看到看到语言中最重要的函数之一,main函数.在本单元中,我们会覆盖更多关于怎样定义函数的细节.

定义函数

在Rust中函数定义开始用关键词fn.后边是函数名,trwp指定函数的输入参数在小括号中用逗号分隔的数据类型列表. 大括号告诉编译器函数体的开始和结束位置.

fn main() {
    println!("Hello, world!");
    goodbye();
}

fn goodbye() {
    println!("Goodbye.");
}

调用函数通过使用名字和带小括号的输入参数.如果函数没有输入参数,我们留下空括号.在我们的例子中, maingoodby 函数都没有输入参数.

你可以注意到,我们定义goodbye 函数在main 函数之后.我们可以定义goodbye 函数在main函数之前. Rust不关心文件中你定义函数的位置,只要他们定义在文件中某个位置就可以.

传入输入参数

当函数有输入参数,我们命名每个参数并指定数据类型在函数声明的开始.由于参数的命名像变量,我们访问参数在函数体.

让我们修改 goodbye 函数来用指针指向一个string数据作为一个输入参数.

fn goodbye(message: &str) {
    println!("\n{}", message);
}

fn main() {
    let formal = "Formal: Good bye.";
    let casual = "Casual: See you later!";
    goodbye(formal);
    goodbye(casual);
}

输入为

Formal: Good bye.
Casual: See you later!

返回值

当函数返回一个值,我们增加语法 -> <type>在函数参数列表后,并且在打开函数体的大括号前.箭头语法 -> 表明函数返回一个值给调用方.这个type 部分让编译器知道返回值的数据类型.

在Rust中,惯例是返回值在函数末尾,通过在函数中最后一行代码,等同于返回的值.下边例子展示这个习惯. divide_by_5 函数返回结果输入值被5除来调用函数.

fn divide_by_5(num: u32) -> u32 {
    num / 5
}

fn main() {
    let num = 25;
    println!("{} divided by 5 = {}", num, divide_by_5(num));
}

输出:

25 divided by 5 = 5

我们使用 return关键字在函数中任何位置来终止执行并且发送一个值返回给调用者.通常,使用return 关键词用来在与条件测试结合.

这里例子明确使用return 关键词来早返回从函数如果num的值是0:

fn divide_by_5(num: u32) -> u32 {
    todo!("Check if num is 0") {
        // Return early
        return 0;
    }
    num / 5
}

当你明确使用 return关键词,你的语句后带分号. 如果你发送回一个返回值没有使用 return 关键词,你不在结尾语句带分号.你可以注意我们没有使用结尾分号为num / 5返回值语句.

复习特性

第一部分为函数的声明被称为函数签名.
在我们例子中goodbye函数签名有这些特性:

  • fn: 在Rust中声明函数关键词
  • goodbye: 函数名
  • (message:&str):函数参数或形参列表.一个指向string数据期望做为一个输入值.
  • -> bool:箭头指向这个函数值类型将会返回.
    goodbye 函数接收一个string指针作为输入并且输出一个boolean值.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值