4 控制結構

2021-06-21 10:01:55 字數 2383 閱讀 4551

if false  else if true  else
if結構的條件必須是bool型別的(沒有隱式轉換發生)。如果分支是有值的**塊,那麼所有的**分支所能夠執行到的最後表示式的值必須擁有相同的型別:

fn signum(x: int) -> int 

else if x > 0

else

}

rust的match結構式c中switch結構的通用、簡潔版本。你提供乙個值和一些分支,每個分支用乙個模式標識,然後**按順序將值與每乙個模式比較,直到其中乙個匹配為止。模式匹配成功後執行相應的分支:

match my_number

不像c,分支沒有「falling through」一說,僅僅乙個分支被執行。當執行完成時,沒有顯式的break跳出結構。

乙個match的分支包含乙個模式和箭頭=>,隨後是乙個動作(表示式)。字面值是有效的模式,且僅僅匹配它自己的值。只要每個變數繫結了相同的變數集,單個的分支可能通過管道操作符(|)結合來匹配多個模式。數字字面值的範圍模式可用兩點來表示,就像m..n。下劃線(_)是乙個萬用字元,能夠匹配任意單個值。(..)是乙個不同的萬用字元,能夠匹配列舉變數的乙個或多個域。

模式匹配成功的分支,跟隨在胖箭頭=>後的表示式將被估值。每個分支以逗號分隔。在分支中使用塊表示式是方便的,這種情況下,逗號是可選的。

match my_number 

_ =>

}

match結構必須是無遺漏的:對於每種可能的情況都必須有分支覆蓋。舉個例子,如果先前例子中萬用字元模式的分支被忽略,型別檢查器將會拒絕它。

模式匹配更強大的應用是解構:為繫結名字到資料型別的內容而匹配。

注意:下面的**使用元組((f64,f64))將在5.3節解釋。現在你將元組視為列表項。

use std::f64;

use std::num::atan;

fn angle(vector: (f64, f64)) -> f64

}

乙個變數名匹配任意值,且在分支動作的作用域中將該變數名繫結到所匹配值的值上。因此,(0.0, y)匹配任何第乙個元素是0的元組,且繫結y到第二個元素。(x, y)匹配任何二元元組,且繫結兩個元素給變數。(0.0, _)匹配任何第乙個元素是0的元組,且不繫結任何值給第二個元素。

通過使用

variable@ pattern,乙個子模式也能夠限制變數。例如:

match age  years old", a),

_ => println!("older than 21")

}

任何match的分支可以有乙個判斷從句(寫做if expr),叫做模式斷言,它是bool型別的表示式,在模式匹配後,對是否選擇該分支做出判斷。斷言表示式也在以模式繫結的變數的作用域內。angle例子中的第乙個分支顯示了模式斷言的例子。

你已經看到了簡單的let繫結,但let比你被引導所相信的更具想象力,它也支援解構模式。舉個例子,你能夠通過一次引入兩個變數:a和b,來提取元組中的多個域。

let

(a, b) = get_tuple_of_two_ints();

let繫結僅僅工作在不可拒絕的模式下:即模式不能出現匹配失敗的情況。這不包括let匹配字面值和大多數enum變數

while表示迴圈,當被給條件(必須為bool型別)估值為ture時迭代。在迴圈內部,關鍵字break終止迴圈,關鍵字continue終止當前迭代,開始下次迭代。

let mut cake_amount = 8;

while cake_amount > 0

loop表示無限迴圈,它是比寫while true更好地方式。

let mut x = 5u;

loop

println!("{}", x);

}

這段**列印怪異的數字序列,當它發現某個數能被5整除時終止迴圈。

也有能被用於遍歷數的範圍的for迴圈。

for n in range(0, 5) ", n);

}

上述片段列印從0到5的整數值。

更一般的,for迴圈能夠在任何實現iterator特性的資料結構中工作。資料結構能夠提供乙個或多個方法返回它們內容中的迭代器。舉個例子,字串支援通過多種方式迭代其內容。

let s = "hello";

for c in s.chars() ", c);

}

上述片段垂直地列印「hello」中的字元,每個字元後新增新的換行。

python 4 程式的控制結構

4.1程式的分支結構 4.2例項 身體質量指數bim 4.3程式的迴圈結構 for while 4.4 random 4.5 例項 圓周率的計算 單分支 if 二分支 if else 多分支 if elif else 條件判斷 條件組合 x and y 邏輯與 x or y 邏輯或 not x 邏輯...

第4章 程式的控制結構

0401.輸入乙個年份,輸出是否為閏年。閏年條件 能被4整除但不能被100整除,或者能被400整除的年份都是閏年。0401 n eval input if n 4 0 and n 100 0 or n 400 0 print 年是閏年 format n else print 年不是閏年 format...

控制語句(4)

第4章 控制語句 if 條件1 語句1 elif 條件2 語句2 elif 條件3 語句3 else 語句n 說明 elif語句,只要有乙個條件成立,就會將其後的乙個部分語句執行後推出整個if語句 if三元運算子 表示式1 if 條件 else 表示式2 a none b 3x b if a is ...