[おまかせシリーズを理解する|ゼロベース| | rustlang言語をはじめ|(12)]
興味深いことに基礎
列挙型
今日はさんのget列挙してみましょう。
で数学とコンピュータ科学の理論、一連の列挙は、系列の有限集合、またはオブジェクト数の特定のタイプのすべてのメンバーのためのいくつかのプログラムのリストです。どちらのタイプは、しばしば(常にではない)のオーバーラップ。これは、名前の列挙は、日曜日、月曜日、火曜日、水曜日、曜日など、日常生活の中で非常に一般的ですされた整数定数の集合体である木曜日、金曜日、土曜日が列挙です。
次のように定義されました:
enum Day {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
// The `Day` is the enum
// Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday are the variants
次のような::によってアクセスすることができるenum値、
Day::Sunday
各列挙値は、次の形式を持つことができます。
1.のみ名前は値(可変部)を有していません
2.名前命じた値(変数タプル)
3.値(アーキテクチャ本体変数)と命名されています
コードを見てください:
enum FlashMessage {
Success, // A unit variant
Warning{ category: i32, message: String }, // A struct variant
Error(String) // A tuple variant
}
fn main() {
let mut form_status = FlashMessage::Success;
print_flash_message(form_status);
form_status = FlashMessage::Warning {category: 2, message: String::from("Field X is required")};
print_flash_message(form_status);
form_status = FlashMessage::Error(String::from("Connection Error"));
print_flash_message(form_status);
}
fn print_flash_message(m : FlashMessage) {
// Pattern matching with enum
match m {
FlashMessage::Success =>
println!("Form Submitted correctly"),
FlashMessage::Warning {category, message} => // Destructure, should use same field names
println!("Warning : {} - {}", category, message),
FlashMessage::Error(msg) =>
println!("Error : {}", msg)
}
}
上記は、私はあなたに役立つ願っています。
如果遇到什么问题,欢迎加入:rust新手群,在这里我可以提供一些简单的帮助,加微信:360369487,注明:博客园+rust