ساختار تاپلها
اگر نام فیلدها بیاهمیت هستند، میتوانید از ساختار tuple استفاده کنید:
struct Point(i32, i32); fn main() { let p = Point(17, 23); println!("({}, {})", p.0, p.1); }
این اغلب برایsingle-field wrapper (که newtypes نامیده میشوند) استفاده میشود:
struct PoundsOfForce(f64); struct Newtons(f64); fn compute_thruster_force() -> PoundsOfForce { todo!("از یک دانشمند حوزه موشک در ناسا بپرس") } fn set_thruster_force(force: Newtons) { // ... } fn main() { let force = compute_thruster_force(); set_thruster_force(force); }
This slide should take about 10 minutes.
- Newtypes یک راه مناسب برای رمزگذاری اطلاعات اضافی در مورد مقدار در یک نوع اولیه (primitive type) است، به عنوان مثال:
- این عدد در برخی واحدها اندازه گیری میشود:
Newtons
در مثال بالا. - مقدار زمانی که ایجاد شد مقداری اعتبارسنجی را دریافت کرد، بنابراین دیگر لازم نیست در هر بار استفاده دوباره آن را تأیید کنید:
PhoneNumber(String)
یاOddNumber(u32)
.
- این عدد در برخی واحدها اندازه گیری میشود:
- نحوه افزودن مقدار
f64
به نوعNewtons
را با دسترسی به single field در نوع جدید نشان دهید.- Rust معمولاً چیزهای غیر واضح را دوست ندارد، مانند automatic unwrapping یا بهعنوانمثال استفاده از booleanها به عنوان اعداد صحیح.
- مبحث Operator overloading در روز سوم مورد بحث قرار می گیرد (generics).
- این مثال، اشاره ظریفی به شکست مدارگَرد آبوهوای مریخ است.