rust
的列舉型別相對於c++來說,有更強大的表現能力,先給出最基本的定義方式:
enum ip
fn main()
列舉型別可以有不同的資料型別,並儲存對應的資料,給出**例項:
enum ip
fn main()
列舉型別可以有自己的impl
塊,**例項:
enum message ,
write (string),
changecolor(i32, i32, i32),
}impl message
}fn main()
rust中沒有null reference
的概念,不過有很多時候我們需要none
的判別,下面給出乙個可行的方式:
// enum option
fn main()
注意,上面的some_number
不能直接和i32
相加,而是需要一些型別轉化。
給出**例項:
enum coin
fn value_in_cents(coin: coin) -> u8 ,
coin::nickel=> 5,
coin::dime => 10,
coin::quarter => 25,
}}fn main() ", value_in_cents(coin));
}
match
中的值繫結,給出**例項:
#[derive(debug)] // 為了trait使用,暫時不必管
enum usstate
enum coin
fn value_in_cents(coin: coin) -> u8 ", state); // 輸出繫結值的方式25}
}}fn main() ", value_in_cents(coin));
}
在給出乙個**例項,如果是空直接返回,否則返回+1
fn plus_one(x: option) -> option
}fn main()
可以使用_
來表示任意匹配,簡單的例子:
match x
這麼做的最有價值的地方,在於簡化表達方式:
let some_u8_value = some(0u8);
match some_u8_value
這和下面這種方式等價:
let some_u8_value = some(0u8);
if let some(3) = some_u8_value
唯一的缺陷在於缺少了窮進性檢查 C 學習筆記6 列舉型別
c 的enum工具提供了另一種建立符號常量的方式,這種方式可以代替const。我們可以使用關鍵字enum,比如定義乙個顏色的列舉型別,enum color 列舉型別變數內容必須是整數型別,預設是從0開始的,不允許是浮點型別。但是我們可以給變數賦值,然後之後的值加一。定義乙個列舉變數內容可以是整形,也...
9 4 列舉型別
乙個變數只有幾種可能的取值,可以一一枚舉出來,變數的取值僅限於列舉的值的有限範圍內,而不適宜用整型 實型 字元型直接表示,c語言提供了這種列舉資料型別。例如,一年的四季有春夏秋冬 乙個星期有星期日 星期一到星期六等。定義列舉型別的一般形式為 enum 列舉型別名 如 enum weekday 1.列...
146 列舉型別
除了簡單的變數型別之外,c 還提供了3個複雜的變數 列舉,結構和陣列。列舉型別的定義 enum 列舉型別的宣告 列舉型別的賦值 在遊戲中我們可以定義乙個int型別來儲存狀態 0 遊戲暫停 1遊戲失敗 2遊戲勝利 3開始選單,但是這樣不容易閱讀,而且容易出錯。這個時候我們通過列舉型別來解決 enum ...