👩💻 آموزش زبان Rust – قسمت ششم: ساختارها (Structs) و انواع سفارشی (Enums)
سلام به همه! خوش آمدید به قسمت ششم از آموزش زبان Rust.
😉 در این قسمت میخواهیم با دو مفهوم کلیدی در Rust آشنا شویم: ساختارها (Structs) و انواع سفارشی (Enums). این مفاهیم به ما کمک میکنه دادههای خود را بهصورت سازمانیافتهتر مدیریت کرده و منطق برنامهتان را بهبود دهید.
🔵 ساختارها (Structs)
در بسیاری از زبانهای برنامهنویسی، از ساختارها برای نگهداری دادههای مرتبط با هم استفاده میشود. در Rust، ساختارها به ما اجازه میدهد چندین مقدار را در یک نوع داده واحد جمع کنید.
🔵تعریف ساختار (Struct)
برای تعریف یک ساختار جدید، از کلمه کلیدی struct استفاده میکنیم:
struct مستطیل {
طول: u32,
عرض: u32,
}
در این مثال، ما یک ساختار به نام مستطیل با دو فیلد طول و عرض تعریف کردیم که هر دو از نوع u32 هستند.
🔵 ایجاد نمونه از یک ساختار
بعد از تعریف ساختار، میتوانیم نمونهای از آن ایجاد کنیم:
fn main() {
let مستطیل1 = مستطیل {
طول: 30,
عرض: 50,
};
println!("مستطیل1: طول {} و عرض {}", مستطیل1.طول, مستطیل1.عرض);
}
در اینجا، یک نمونه از ساختار مستطیل ساختهایم که طول آن 30 و عرض آن 50 است.
🔵 تعریف متدها برای ساختارها
یکی از ویژگیهای کاربردی Rust این است که میتوانیم متدهایی برای ساختارها تعریف کنیم تا بتوانیم عملیاتهای مختلفی را روی دادههای آن انجام دهیم. برای این کار از کلمه کلیدی impl استفاده میکنیم:
struct مستطیل {
طول: u32,
عرض: u32,
}
impl مستطیل {
fn مساحت(&self) -> u32 {
self.طول * self.عرض
}
}
fn main() {
let مستطیل1 = مستطیل {
طول: 30,
عرض: 50,
};
println!("مساحت مستطیل: {}", مستطیل1.مساحت());
}
در این مثال، یک متد به نام مساحت تعریف کردهایم که طول و عرض مستطیل را گرفته و مساحت آن را محاسبه میکند.
🔵 انواع سفارشی (Enums)
در بسیاری از مواقع، نیاز دارید دادههایی داشته باشید که میتوانند چندین حالت مختلف داشته باشند. برای این منظور، از انواع سفارشی (Enums) در Rust استفاده میکنیم. این نوع داده به شما اجازه میدهد تا مقادیر مختلفی را که میتوانند حالتهای متفاوتی داشته باشند، تعریف کنید.
🔵 تعریف Enum
در Rust، با استفاده از enum میتوان انواع مختلفی از مقادیر را در یک نوع داده جمع کرد:
enum پیام {
شروع,
توقف,
ارسال(String),
}
در این مثال، ما یک enum به نام پیام تعریف کردهایم که میتواند یکی از سه حالت مختلف باشد: شروع، توقف یا ارسال که یک رشته را دریافت میکند.
🔵 استفاده از Enum
برای استفاده از enum، باید آن را نمونهسازی کنید و با استفاده از ساختار match برای بررسی حالات مختلف، رفتار متفاوتی را تعیین کنید:
fn پردازش_پیام(پیام: پیام) {
match پیام {
پیام::شروع => println!("شروع شد"),
پیام::توقف => println!("متوقف شد"),
پیام::ارسال(متن) => println!("پیام ارسال شد: {}", متن),
}
}
fn main() {
let پیام1 = پیام::ارسال(String::from("سلام!"));
پردازش_پیام(پیام1);
}
در این مثال، تابع پردازش_پیام بر اساس حالت مختلف پیام، کار متفاوتی انجام میدهد.
🔵ترکیب ساختارها و Enum
یکی از کاربردهای قدرتمند Rust، توانایی ترکیب ساختارها و Enums است. میتوانید از ساختارها درون enum استفاده کنید تا دادههای پیچیدهتری ایجاد کنید:
struct مختصات {
x: i32,
y: i32,
}
enum شکل {
دایره { شعاع: f64 },
مستطیل { طول: u32, عرض: u32 },
نقطه(مختصات),
}
fn نمایش_شکل(شکل: شکل) {
match شکل {
شکل::دایره { شعاع } => println!("شکل: دایره با شعاع {}", شعاع),
شکل::مستطیل { طول, عرض } => println!("شکل: مستطیل با طول {} و عرض {}", طول, عرض),
شکل::نقطه(مختصات) => println!("نقطه در موقعیت: ({}, {})", مختصات.x, مختصات.y),
}
}
fn main() {
let شکل1 = شکل::مستطیل { طول: 30, عرض: 50 };
let شکل2 = شکل::دایره { شعاع: 10.5 };
let شکل3 = شکل::نقطه(مختصات { x: 10, y: 20 });
نمایش_شکل(شکل1);
نمایش_شکل(شکل2);
نمایش_شکل(شکل3);
}
در این مثال، ما از هر دو ساختار struct و enum استفاده کردهایم تا دادههای پیچیدهتری از اشکال مختلف را مدیریت کنیم.
#آموزش_برنامه_نویسی_راست
#Rust_Programming
➖➖➖➖➖➖➖😁@Digitallearning5
😒@Future_Engineers1