Refining Ch03.

This commit is contained in:
rust-lang.xfoss.com 2023-12-08 17:21:36 +08:00
parent f768d5f9c3
commit 3dec2ad5a5
2 changed files with 20 additions and 12 deletions

View File

@ -1,9 +1,10 @@
fn main() {
let x = plus_one(-1);
println! ("Hello, world!");
println! ("x 的值为:{}", x);
another_function();
}
fn plus_one(x: i32) -> i32 {
x + 1
fn another_function() {
println! ("另一函数。");
}

View File

@ -1,14 +1,18 @@
# 函数
函数遍布于 Rust 代码中。而那个这门语言中最重要函数之一:`main` 函数,也一早就见到过了,`main` 函数可是许多程序的入口点。通过那个还已见到过的 `fn` 关键字,就可以声明出新的函数来。
**Functions**
函数在 Rust 代码中非常普遍。咱们已经看到,这门语言中最重要的函数之一:`main` 函数,他是许多程序的入口点。咱们还见过 `fn` 关键字,他允许咱们声明出新的函数。
Rust 代码使用 *蛇形命名法snake case*,作为函数和变量名的习惯样式,其中所有字母都是小写,并以下划线分隔单词。下面是个包含了函数定义示例的程序:
Rust 代码使用 *蛇形命名法snake case*,作为函数与变量命名的约定样式,以这种命名法,函数及变量名称中的全部字母都是小写的,同时用下划线来分隔单词。下面就是一个包含了示例函数定义的程序:
文件名:`src/main.rs`
```rust
fn main() {
println!("Hello, world!");
println! ("Hello, world!");
another_function();
}
@ -18,11 +22,12 @@ fn another_function() {
}
```
这里通过敲入 `fn` 关键字,接着的是函数名字,以及一套圆括号(`()`),定义出了一个函数。而那一对花括弧(`{}`),则告诉编译器,函数体在哪里开始和结束。
我们通过输入后跟函数名和一组括号的 `fn`,来定义出 Rust 中的函数。花括号告诉编译器,函数体于何处开始及结束。
通过敲入函数名字,接上一对圆括号(`()`),就可以对已定义好的函数进行调用。由于 `another_function` 在程序中定义过,因此就可以在 `main` 函数里头对其调用。请注意在源代码中,是在 `main` 函数 *之后* 定义的 `another_function`;原本也可以在 `main` 函数之前定义他。Rust 不会关心在何处定义函数,只要他们在某处有定义即可。
我们可以通过输入后跟一组括号的其名字,来调用我们已定义的任何函数。因为 `another_function` 是在该程序中定义的,所以可以从 `main` 函数内部调用他。请注意,我们在源代码中的 `main` 函数 *之后*,定义了 `another_function`;我们也可以在之前定义他。 Rust 并不关心咱们在何处定义函数,而只关心他们,是在调用者可以看到的作用域中某个地方定义的。
我们来启动一个名为 `functions` 的新二进制项目,以进一步探索函数。请将这个 `another_function` 示例,放入 `src/main.rs` 并运行。咱们会看到以下输出:
为进一步对 Rust 的函数加以探索,就来创建一个新的名为 `functions` 的二进制可执行项目。将这个 `another_function` 示例放在 `src/main.rs` 中并运行。就会看到如下的输出:
```console
$ cargo run
@ -33,12 +38,14 @@ Hello, world!
另一函数。
```
> 注二进制项目a binary project是与库源代码项目相对应的可生成二进制可执行程序的项目
这些行会按照他们在主函数中出现的顺序执行。首先打印 "Hello, world!" 这条消息,然后 `another_function` 被调用,并打印其消息
这些代码行,是以他们出现在 `main` 函数中的顺序执行的。首先打印出的是 `Hello, world!` 消息,而随后 `another_function` 就被调用了,同时他的消息被打印出来。
## 参数
**Parameters**
可将函数定义为有 *参数parameters*所谓参数就是作为函数签名一部分的一些特殊变量which are special variables that are part of a function's signature。在函数有着参数时就可以提供到函数与这些参数对应的具体值。技术上讲提供到函数的具体值叫做 *实参arguments*,不过在一般聊天中,人们会将 *形参parameters**实参arguments* 两个说法互换使用,既指函数定义中的变量,又表示调用函数时所传入的具体值。
在下面这个版本的 `another_function` 中,就要添加一个参数: