Rust中的函數採用「蛇形命名法(Snake Case)」,其函數名中只能出現小寫字母和下劃線_
。html
例如:file_name、 line_number。express
調用函數示例:網絡
fn main() { println!("Hello, world!"); another_function(); } fn another_function() { println!("Another function."); }
函數能夠在main
的不管先後定義。函數
示例:oop
fn main() { another_function(5, 6); } fn another_function(x: i32, y: i32) { println!("The value of x is: {}", x); println!("The value of y is: {}", y); }
在定義函數時應注意聲明參數的數據類型。日誌
多個參數間用,
分隔。code
不一樣參數的數據類型沒必要相同。htm
Statements(沒有返回值):blog
建立變量並綁定數值:let
element
因此let x = (let y = 6);
是錯誤的。
定義函數
Expressions:
數字運算:5 + 6
{}
let y = { let x = 3; x + 1 };
須要注意的是,這裏的x+1
的後面沒有;
,由於若是加了;
,整個{}
將變爲一個Statement,從而不具備返回值。
函數可以具備返回值。
返回值不用命名,可是須要用->
聲明數據類型。
在Rust中,函數的返回值等於函數體中的最後一個表達式。
也能夠用return
提早返回值。
示例:
fn five() -> i32 { 5 } fn main() { let x = five(); println!("The value of x is: {}", x); }
若是在應有返回值的函數體的最後一個表達式尾加入;
,則會拋出一個CE。
單行註釋:用//
開頭。
多行註釋:每行用//
開頭。
if
表達式示例:
fn main() { let number = 3; if number < 5 { println!("condition was true"); } else { println!("condition was false"); } }
if
→ ifelse
→ else須要注意的是,if
後面的條件語句最好不加()
,不然會拋出一個warning。
且條件語句的值必須是一個bool
,不然會拋出一個CE。Rust並不會自動將整數類型轉換爲邏輯類型。因此若是要判斷一個數字非零,運用!= 0
。
利用else if
處理多條件狀況
示例:
fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } }
Rust只執行最早條件爲真的分支,在其後面的分支將會被跳過。
在let
語句中運用if
由於if
是一個表達式,因此咱們能夠在let
語句的右邊運用if
示例:
fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {}", number); }
須要注意的是,在這種狀況下,每一個if
分支中的表達式的數據類型必須是相同的。不然會拋出一個CE。
Rust中有三種循環方式:loop
、while
、for
loop
loop
會使Rust不斷重複執行一段代碼,直到你讓它中止。
示例:
fn main() { loop { println!("again!"); } }
要使println!("again!");
中止,能夠關閉程序,或者按^C
(Ctrl+C
)停止程序。
也能夠在loop
中加入break
來中止執行loop
。
在loop
中返回值
能夠在break
以後加上想要返回的值,例如:
fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; println!("The result is {}", result); }
while
示例:
fn main() { let mut number = 3; while number != 0 { println!("{}!", number); number -= 1; } println!("LIFTOFF!!!"); }
一樣地,最好不要加()
,不然會拋出一個warning。
for
循環遍歷一個集合咱們能夠用while
來遍歷一個集合:
fn main() { let a = [10, 20, 30, 40, 50]; let mut index = 0; while index < 5 { println!("the value is: {}", a[index]); index += 1; } }
可是這樣寫是易於出錯的(下標可能越界),並且還比較慢(每個循環都要判斷一下條件)。
用for
能夠更簡潔:
fn main() { let a = [10, 20, 30, 40, 50]; for element in a.iter() { println!("the value is: {}", element); } }
iter()
→ 迭代器(iterator)fn main() { for number in (1..4).rev() { println!("{}!", number); } println!("LIFTOFF!!!"); }
(1..4)
→ Range
類型,生成一個序列"1 2 3"(左閉右開)。rev()
→ 反轉(reverse) 。The Rust Programming Language by Steve Klabnik and Carol Nichols, with contributions from the Rust Community : https://doc.rust-lang.org/book/
蛇形命名法(snake case)駝峯命名法(camel case)字符轉換問題 by 王約翰的網絡日誌:http://www.javashuo.com/article/p-uorvqiac-ep.html