rust筆記6 列舉型別

2021-09-26 11:15:23 字數 1503 閱讀 3357

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 ...