mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2024-12-26 12:50:42 +08:00
Refining Ch03.
This commit is contained in:
parent
f768d5f9c3
commit
3dec2ad5a5
@ -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! ("另一函数。");
|
||||
}
|
||||
|
||||
|
@ -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` 中,就要添加一个参数:
|
||||
|
Loading…
Reference in New Issue
Block a user