توجه تمامی آموزشهای قرار گرفته شده در این مجموعه آموزشی، ترجمه مبتدی help خود زبان Rust میباشد.منبع اصلی
برای تعریف متغیرها در Rust از کلمهی رزرو شده let باید استفاده کنیم و در آخر هر خط ; باید بزاریم:
let _x = 5;
قرارداد نام گذاری متغیرهای محلی در Rust به صورت snake_case هست یعنی تمام نام،با حروف کوچیک نوشته میشه و برای خوانایی بهتر از زیرخط(Underline) استفاده میشه:
let snake_case = 0;
در Rust متغیرها به صورت پیش فرض تغییرناپذیرند(Immutable).خیلی ها این مفهوم رو با ثابت ها(constant)اشتباه میگیرن که جلوتر دربارش صحبت میکنیم.زمانی که تغییرناپذیری رو با مقداری تعریف میکنیم اگر دوباره مقداری بهش بدیم کامپایلر خطا میده.اجازه بدین تا با مثال های زیر شروع کنیم:
fn main() { let x = 5; println!("The value of x is: {}", x); x = 6; println!("The value of x is: {}", x); }
اگر برنامه بالا رو در Vscode با هر روش اجرا کنیم خطای زیر رو به ما نشون میده:
error[E0384]: cannot assign twice to immutable variable `x` --> src/main.rs:4:5 | 2 | let x = 5; | - first assignment to `x` 3 | println!("The value of x is: {}", x); 4 | x = 6; | ^^^^^ cannot assign twice to immutable variable
در برنامهی بالا با استفاده از ()!println نتیجه رو در کنسول چاپ کردیم اگر هم با برنامه نویسی c# کار کرده باشین میدونین که استفاده از {} در رشتهها باعث چاپ کارکتری مخصوصی در اون قسمت میشه مثال:
println!("The value of x is: {}", x);
در بالا x به جای {} چاپ میشه.
اما متغیرها فقط به صورت پیش فرض تغییر ناپذیرند و میشه اون ها رو با mut تغییر پذیر کرد:
fn main() { let mut x = 5; println!("The value of x is: {}", x); x = 6; println!("The value of x is: {}", x); }
و نتیجه به صورت زیر هست:
The value of x is: 5 The value of x is: 6
تغییر مقدار یه متغیری که به صورت پیش فرض تغییرناپذیر هست (توی یه جمله چقدر غ گفتم) با یه ثابت کاملا متفاوته.
در مثال زیر یه ثابت با نامMAX_POINTS تعریف شده که مقدارش برابر شده با 100000 که با استفاده از _ برای خوانایی بیشتر از هم جدا شده.قرارداد نام گذاری ثابتها هم به صورت Uppercase با Underline.
const MAX_POINTS: u32 = 100_000;
در Rust میتونیم یه متغیر هم اسم متغیر قبلی تعریف کنید، به شرطی که از کلید واژه let قبل از نام متغیر استفاده کنید. مثال:
fn main() { let x = 5; let x = x + 1; let x = x * 2; println!("The value of x is: {}", x); }
توی خط اول متغیری با نام x با مقدار 5 معرفی کردیم و در خط بعدی بدون این که از کلید واژه mut استفاده کنیم مقدار اون رو تغییر دادیم و همین کار رو در خط سوم هم انجام دادیم.
برنامه باید مقدار 5 رو چاپ کنه یا حداقل خطا بده ولی داره از مفهوم shadowing استفاده میکنه و مقدار 12 رو چاپ میکنه.پنهان کردن با mut کردن یه متغیر متفاته. برای درک بهتر به دو مثال پایین خوب توجه کنید:
let spaces = " " let spaces = spaces.len();
با استفاده از کلید واژه let هم از مفهموم shadowing استفاده کردیم و هم نوع متغیر رو تغییر دادیم.(نوع متغیر در خط اول رشته است و در خط دوم عدد) مثال بالا خطایی ندارد و نتیجه رو اگر چاپ کنیم تعداد space هایی رو که در رشته بوده به صورت عدد بر میگردونه که در این مثال 3 هست. اما اگر از کلید واژه ی mut استفاده کنیم :
let mut spaces = " " spaces = spaces.len();
خطا :
error[E0308]: mismatched types --> src/main.rs:3:14 | 3 | spaces = spaces.len(); | ^^^^^^^^^^^^ expected &str, found usize | = note: expected type `&str` found type `usize`
خب این قسمت هم تموم شد سعی کنید خوب این مفاهیم رو درک کنید چرا که هرچی جلوتر بریم مفاهیم یه مقدار سختتر میشه.توی آموزش بعدی دربارهی نوع داده ها صحبت میکنیم.