ساختارها (Structs)
ساختار (Struct) یعنی مدل سفارشی داده. مثل کارت دانش آموز که نام، سن و وضعیت دارد. بنابراین «ساختارها در راست» داده های مرتبط را کنار هم نگه می دارند.
تعریف Struct
با کلیدواژه struct یک قالب می سازیم و فیلدها را داخلش می گذاریم.
struct Person {
name: String,
age: u32,
can_vote: bool,
}
ساخت شیء و دسترسی به فیلدها
پس از تعریف، یک شیء می سازیم. سپس با نقطه به فیلدها دسترسی داریم.
struct Person {
name: String,
age: u32,
can_vote: bool,
}
fn main() {
let user = Person {
name: String::from("John"),
age: 35,
can_vote: true,
};
println!("Name: {}", user.name);
println!("Age: {}", user.age);
println!("Can vote? {}", user.can_vote);
}
تغییر مقدار یک فیلد
برای تغییر فیلد باید شیء را mut کنیم؛ یعنی قابل تغییر.
struct Person {
name: String,
age: u32,
}
fn main() {
let mut user = Person {
name: String::from("John"),
age: 35,
};
user.age = 36;
println!("Name: {}", user.name);
println!("Updated age: {}", user.age);
}
چرا «ساختارها در راست» مهم اند؟
- گروه بندی مرتب داده های مرتبط.
- کد خواناتر و قابل نگهداری تر می شود.
- مدل سازی چیزهای واقعی؛ مثل کاربر و خودرو.
نکته: فیلد یعنی متغیرِ عضوِ ساختار. چون داخل یک قالب بزرگ تر است، به جای «متغیر معمولی»، «فیلد» می گوییم. برای داده های نگاشتی، به هش مپ سر بزن. برای نوع های برشمردنی، انواع شمارشی را ببین. همچنین لینک خود ساختارها در راست برای مرور سریع است.
گام های تمرین
- یک
Personبساز و سه فیلد قرار بده. - یک شیء بساز و فیلدها را چاپ کن.
- شیء را
mutکن و یک فیلد را تغییر بده. - یک ساختار جدید مثل
Bookطراحی کن.
جمع بندی سریع
- Struct قالب داده سفارشی است.
- دسترسی با نقطه انجام می شود.
- تغییر فیلد نیاز به
mutدارد. - مدل سازی دنیای واقعی راحت تر می شود.