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)) }