"首次提交"

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
if_else/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
/target

8
if_else/Cargo.toml Executable file
View File

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

68
if_else/src/main.rs Executable file
View File

@ -0,0 +1,68 @@
fn main() {
println!("Hello, world!");
test_function()
}
fn test_function(){
let num = 34;
//if num {//判断条件必须是bool类型的此处num类型是i32无法进行判断
if num != 0 { // 使用这样的方法来产生一个bool类型的结果提供给if进行判断
/* 当有多个条件时为了防止混乱可以在多个条件上加括号,条件组合的最终结果没必要加 和python类似 */
//if (num != 0) && (num > 0) { //✅
//if ((num != 0) && (num > 0)) { //❎
println!("condition is true");
}else{
println!("condition is false");
}
/* 使用if来构建三元表达式
在C中三元运算符我们使用 cond ? true : false;
在rust中if是表达式而不是语句表达式都会产生一个结果可以作为右值使用
*/
let cond = false;
let ret = if cond {true} else {false}; //使用if构建的三元表达式
/* if 表达式可以多级使用 用法和C类似
但是在rust中使用超过一个if else就应该考虑使用match 和c中的switch类似
*/
let num = 2;
if (num >= 4) && (num % 4 == 0) {
println!("{} can div by 4", num);
} else if num >= 3 && (num % 3 == 0) {
println!("{} can div by 3", num);
}
else if (num > 2 || num == 2) && num % 2 == 0 {
println!("{} can div by 2", num);
}else{
println!("{} cant div by 4 or 3 or 2", num);
}
/* 在rust中if else的值必须保持一致 */
//case1if 和else的代码块值类型不一致。if的是i32 else的是f64是不可以的
// 因为rust是静态强类型。在编译阶段必须直到ret的类型但是如果if else类型不一致会导致无法推断
//let ret = if 2 == 2 {2} else {2.0};
//case2: 如果没有左值也就是没有接收if表达式的变量那么代码块里面就不能有值产生或者说值只能是()
if 2 == 2 { //没有人要if表达式的结果
//2 //❎ 不能产生值
//() //✅ //代码块值只能是 ()
}else{
//2.0 //❎
// //✅ //nothing编译器自动认为是 ()
}
//如果显式的规定的左值的结果那么if表达式里面的代码块值只能是左值类型
//let ret: bool = if 2 == 2 {"true"} else{"false"}; //变量是bool但是表达式里面是字符串 ❎
//如果没有显式指定,编译器会自动推导
let ret = if 2 == 2 {"true"} else{"false"}; //变量没有类型,编译自动推到出来 ✅
// test () value
let ret = if 2 == 2 {} else{};
if ret == () { //判断是是否为()
println!("ret if ()")
}else{
println!("ret is not ()")
}
}