"首次提交"
This commit is contained in:
1
if_else/.gitignore
vendored
Executable file
1
if_else/.gitignore
vendored
Executable file
@ -0,0 +1 @@
|
||||
/target
|
8
if_else/Cargo.toml
Executable file
8
if_else/Cargo.toml
Executable 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
68
if_else/src/main.rs
Executable 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的值必须保持一致!! */
|
||||
//case1:if 和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 ()")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user