文章目錄
- 函數
- **語句與表達式**
- 條件語句
- 循環
函數
Rust的函數基本形式是這樣的
fn a_func(a: i32) -> i32 {}
函數名是蛇形風格,rust不在意函數的聲明順序,只需要有聲明即可
函數參數必須聲明參數名稱和類型
語句與表達式
這是rust非常重要的基礎概念,我們可以認為函數體是由語句和表達式組成的
語句指的是執行某些操作并且沒有返回值的步驟
例如
let a = 5; // 正確
let b = (let c = 1); // 錯誤 因為 let c = 1 沒有返回值
表達式有計算步驟且有返回值,例如
a = 7
b + 1
c * (a + b)
rust認為{}
內也是一個表達式
let a = 1;
let c = {let b = 1;a + b
};
需要注意的是,表達式的返回值是 a + b,代表整個表達式的返回值,加上;
之后就成了語句,就沒有返回值了
返回值需要通過->
聲明返回值類型,但是rust不支持自動返回值類型判斷
函數體表達式不允許有返回值,不能使用return
條件語句
基本格式是這樣的
fn main() {let number = 3; if number < 5 { println!("條件為 true"); } else { println!("條件為 false"); }
}
- 條件是可以不用小括號的,當然要用也行
- 大括號是必須加的
- else if 和 C++ 是類似的
條件必須是bool類型的,不允許隱式類型轉換
也可以用if else 寫一個三目運算符
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number 為 {}", number);
}
- 兩個函數體表達式的返回值必須相同
- 必須有else
循環
while循環和其他語言是一樣的
fn main() {let mut number = 1; while number != 4 { println!("{}", number); number += 1; } println!("EXIT");
}
for循環是和python很像的,類似于C++的范圍for
fn main() { let a = [10, 20, 30, 40, 50]; for i in a.iter() { println!("值為 : {}", i); }
}
這里的a是數組,iter表示迭代器,后面我們會詳細講
也可以使用下標來訪問數組
fn main() {
let a = [10, 20, 30, 40, 50]; for i in 0..5 { println!("a[{}] = {}", i, a[i]); }
}
loop循環
相當于while true
break可以類似于return一樣,讓整個循環有一個返回值
除此之外也可以給循環設定標簽,也就是可以在多層循環時,內部只需要一個break,就能退出所有循環,同時還能帶出返回值