From d92172ff24eac08f6e2b53fb7844d95747e2e3f3 Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Sat, 25 May 2024 18:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 5.function/src/main.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/5.function/src/main.rs b/5.function/src/main.rs index e7a11a9..29ec13c 100644 --- a/5.function/src/main.rs +++ b/5.function/src/main.rs @@ -1,3 +1,30 @@ fn main() { - println!("Hello, world!"); + hello_rust(); +} + +// rust 中 函数通常使用 snake_case 命名法 +fn hello_rust(){ + print_hello("Rust"); +} + +// 在 rust 函数声明中, 必须写明函数的输入参数类型, 以及返回值类型 +// 没有返回值时, 可以省略返回值类型 +fn print_hello(msg: &str){ + // lambda 表达式 + let msg = ||{ + // 一般情况下 函数中最后一个表达式的值 为 返回值 + // 等价于 return build_msg("Hello", msg); + build_msg("Hello", msg) + }; + println!("{}", msg()); +} + +// 函数的定义是一种语句 +// 语句不能直接赋值给变量 +// 如: let i = build_msg(prefix: &str, suffix: &str); // 错误 +fn build_msg(prefix: &str, suffix: &str) -> String { + // 等价于 return String::from(format!("{}, {}", prefix, suffix)); + // 如果 需要在函数中提前返回 可以用 return 关键字 并 返回指定值 + // 这里为表达式, 所以可以直接返回 + String::from(format!("{}, {}", prefix, suffix)) }