diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/config.json" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/config.json" index 8e2ee0f7e7719ed1bee21753bab40297747182b2..ffb2545a9d3b75bf818c55b4353f331cc71f863f 100644 --- "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/config.json" +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/config.json" @@ -2,7 +2,9 @@ "node_id": "rust-c1eede87f41949eeb7960c85b75547fc", "keywords": [], "children": [], - "export": [], + "export": [ + "function.json" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.json" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.json" new file mode 100644 index 0000000000000000000000000000000000000000..db60c76fe9970223d194602b48fe6c0a34cc3993 --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "jackymao_com", + "source": "function.md", + "notebook_enable": false, + "exercise_id": "" +} \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.md" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.md" new file mode 100644 index 0000000000000000000000000000000000000000..99743dc64edadad5084c49d881af805c76a4cc1c --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/5.\345\207\275\346\225\260/function.md" @@ -0,0 +1,79 @@ +# 函数 + +函数是 Rust 实现功能的基本代码块。(这也是函数的英文 function 的另一个意思:功能,作用。) + +最简洁的函数定义如下:(包含函数定义关键字 fn, 函数名,用来包含参数的一对括号(), 省略了返回值(), 一对花括号,里面放函数体) + +```rust +fn main() {} +``` + +还有一些其它形式的函数,如闭包(能捕获它的花括号的外面的环境变量),高阶函数(它以其它函数为参数或返回另一个函数),组合子(Combinators, 以若干函数为参数,并返回一个复杂的函数) + +以下函数能正常编译的是: + +## 答案 + +```rust +fn main() { + fizzbuzz_to(100); +} + +fn is_divisible_by(lhs: u32, rhs: u32) -> bool { + if rhs == 0 { + return false; + } + + lhs % rhs == 0 +} + +fn fizzbuzz(n: u32) -> () { + if is_divisible_by(n, 15) { + println!("fizzbuzz"); + } else if is_divisible_by(n, 3) { + println!("fizz"); + } else if is_divisible_by(n, 5) { + println!("buzz"); + } else { + println!("{}", n); + } +} + +fn fizzbuzz_to(n: u32) { + for n in 1..=n { + fizzbuzz(n); + } +} + +``` + +## 选项 + +### let 声明语句不返回值,不能作为右值赋值给变量 + +```rust +fn main() { + let x = (let y = 6); +} +``` + +### 声明了返回值必须有返回值 + +```rust +fn main() { + let x = plus_one(5); + + println!("The value of x is: {x}"); +} + +fn plus_one(x: i32) -> i32 { + x + 1; +} +``` + +### 有返回值必须声明返回类型 + +```rust +fn main() { 5 } +``` +