الگوها و ضدِ ساختارها
هنگام کار با تاپل ها و سایر مقادیر ساختاریافته، معمول است که بخواهید مقادیر داخلی را در متغیرهای محلی استخراج کنید. این را می توان به صورت دستی با دسترسی مستقیم به مقادیر داخلی انجام داد:
fn print_tuple(tuple: (i32, i32)) { let left = tuple.0; let right = tuple.1; println!("left: {left}, right: {right}"); }
با این حال، Rust همچنین از استفاده از تطبیق الگو برای تخریب یک مقدار بزرگتر در بخش های تشکیل دهنده آن پشتیبانی می کند:
fn print_tuple(tuple: (i32, i32)) { let (left, right) = tuple; println!("left: {left}, right: {right}"); }
This slide should take about 5 minutes.
- الگوهای استفاده شده در اینجا "irrefutable" هستند، به این معنی که کامپایلر می تواند به طور ایستا تأیید کند که مقدار سمت راست
=
ساختاری مشابه الگو دارد. - نام متغیر یک الگوی انکارناپذیر است که همیشه با هر مقداری مطابقت دارد، از این رو میتوانیم از «let» برای اعلام یک متغیر استفاده کنیم.
- Rust همچنین از استفاده از الگوها در شرطیها پشتیبانی میکند و امکان مقایسه برابری و تخریب ساختار را در همان زمان فراهم میکند. این شکل از تطبیق الگو بعداً با جزئیات بیشتری مورد بحث قرار خواهد گرفت.
- مثالهای بالا را ویرایش کنید تا خطای کامپایلر در زمانی که الگو با مقدار مطابقتشده مطابقت ندارد نشان داده شود.