"首次提交"

This commit is contained in:
2024-06-08 15:01:12 +08:00
parent 6e0f708d0a
commit 84349a2469
112 changed files with 3272 additions and 0 deletions

1
function/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
/target

8
function/Cargo.toml Executable file
View File

@ -0,0 +1,8 @@
[package]
name = "function"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

65
function/src/main.rs Executable file
View File

@ -0,0 +1,65 @@
fn main() {
println!("Hello, world!");
another_function();
display(4);
display(5);
let ret = inc(5);
println!("5 + 1 = {}", ret);
let ret = inc1(5);
println!("5 + 1 = {}", ret);
let ret = inc2(5);
println!("5 + 1 = {}", ret);
ThisIsAfunction();
}
//定义一个函数。使用关键字fn
//函数的定义可以在调用后,无需先申明后使用
fn another_function (){
println!("another_function");
}
//函数的param必须标注类型但是不能类型前置
//fn display(i32 x){
fn display(x:i32){
println!("x is {}", x);
}
/*
注释基本和C语言一致多行支持使用 /* */的方式
函数指定返回值必须使用后置,使用 -> 的方式进行返回类型的指定和pythno的类型标注类似但是python是可选的。
*/
fn inc(x:i32) -> i32{
let ret = x + 1;
return ret
}
fn inc1(x:i32) -> i32{
//函数的返回值默认为最后一个表达式的值作为返回值,
//所以这里不能加上分号,加上分号就变成了语句了
x + 1
}
//rust的函数明明必须使用snake_style 下面这种风格会有警告
fn ThisIsAfunction(){
}
fn inc2(x:i32) -> i32{
/*
两个大括号括起来的是一个代码块,
其最后一个表达式的值会作为代码块的最终结果值,
和C语言的宏块({...}) 是类似不过C里面最后的返回值的代码也要加分号
*/
//所以这里使用y作为代码块的返回值并且后面不能加分号
let ret = {
let y = x + 1;
y
}; //这里必须要加分号,因为 let ret ={...}; 加了分号才属于一整个完整的语句,不然语法错误了,{...} 这部分属于表达式
/*
以下几种返回方式都是允许的 但是表达式的风格必须只能是最后一句,
不然中间的代码是必须加分号的,因为不加的话就构不成完整的语句了
*/
//{ret} //方式1: ret作为代码块的值代码块的值又作为函数的返回值但是没必要
//ret //方式2单独表达式作为函数返回值
return ret; //方式3当函数提前返回时必须使用return 关键字当然其放到最后显式的调用也是ok的
}