شمارشی ها (Enums)
شمارشی (Enum) یعنی نوعی که چند حالت محدود دارد. مثل جهت های بازی یا روزهای هفته. بنابراین «شمارشی ها در راست» کمک می کنند حالت ها را ایمن و خوانا مدیریت کنیم.
ساخت یک Enum
با کلیدواژه enum یک نوع می سازیم و حالت ها (Variant) را نام گذاری می کنیم.
enum Direction {
Up,
Down,
Left,
Right,
}
استفاده از Enum و انتساب حالت
برای استفاده، یک متغیر می سازیم و با :: یکی از حالت ها را می دهیم.
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let my_direction = Direction::Up;
println!("We are going up!");
}
match روی مقدار Enum
با match برای هر حالت، کد مناسب اجرا می شود. مثل انتخاب مرحله بازی.
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let my_direction = Direction::Left;
match my_direction {
Direction::Up => {
println!("Going up");
}
Direction::Down => {
println!("Going down");
}
Direction::Left => {
println!("Going left");
}
Direction::Right => {
println!("Going right");
}
}
}
شمارشی با داده همراه
هر حالت می تواند داده داشته باشد. مثل نتیجه ی ورود با پیام.
enum LoginStatus {
Success(String),
Error(String),
}
fn main() {
let result1 = LoginStatus::Success(String::from("Welcome, John!"));
let result2 = LoginStatus::Error(String::from("Incorrect password"));
match result1 {
LoginStatus::Success(message) => {
println!("Success: {}", message);
}
LoginStatus::Error(message) => {
println!("Error: {}", message);
}
}
}
نکته ها و ارتباط ها
نکته: شمارشی ها در راست با match بسیار خوانا می شوند. برای مدل های سفارشی تر، ساختارها را ببین. برای نگه داری زوج های کلید/مقدار، هش مپ مناسب است. همچنین لینک شمارشی ها در راست را برای مرور سریع نگه دار.
گام های تمرین
- یک Enum جهت ها بساز و چاپ کن.
- با
matchبرای هر جهت پیام بده. - یک Enum نتیجه با پیام بساز.
- ورودی متفاوت بده و خروجی را بررسی کن.
جمع بندی سریع
- Enum چند حالت مشخص را مدل می کند.
- انتساب حالت با
::انجام می شود. matchبرای هر حالت کد جدا می زند.- Variant می تواند داده همراه داشته باشد.