اگر قبلا با دستورات شرطی توی هر زبانی آشنایی داشته باشید حتما این قسمت براتون خیلی آسون میشه کافیه به مثال زیر نگاهی بندازید که داره مقدار متغیر number رو بررسی میکنه،اگر مقدار کوچکتر از 7 باشه ()print اولی اجرا میشه در غیر این صورت ()print دومی.
fn main() { let number = 3; if number < 5 { println!("condition was true"); } else { println!("condition was false"); } }
توجه کنید که عبارت if در صورتی شرطی رو چک میکنه که مقدار بازگشتیش true یا false باشه:
fn main() { let number = 3; if number { println!("number was three"); } }
برنامه بالا خطای زیررو تولید میکنه:
میشه با ترکیب if و else عبارت else if رو به وجود آورد:
fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } }
خروجی برنامه بالا:
number is divisible by 3
به دلیل این که if میتونه مقدار برگردونه میتونیم مثل مثال زیر ازش استفاده کنیم:
fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {}", number); }
خروجی برنامه بالا :
The value of number is: 5
توجه کنید هر قسمت از بلاک های if باید نوع یکسانی رو برگردونن مثال:
fn main() { let condition = true; let number = if condition { 5 } else { "six" }; println!("The value of number is: {}", number); }
برنامه بالا به این دلیل که نوع های یکسانی رو برنمیگردونه توسط کامپایلر خطا میده:
به همین دلیل میگیم راست در زبان کامپایل نیاز داره تا نوع همه متغیرها رو بدونه.
حلقهای که با کلید واژهی loop ساخته میشه تا ابد، کد رو تکرار میکنه.تنها راه خارج شدن این که به صورت مستقیم خارج بشیم که جلوتر توضیح میدیم.
fn main() { loop { println!("again!"); } }
نتیجه:
again! again! again! again! ^Cagain!
برای خروج از این حلقه بینهایت توی cmd باید ctrl+c بزنید.
میشه با کلیدواژهی break از داخل حلقه خارج شد و حتی مقداری رو برگردوند.
fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; println!("The result is {}", result); }
مثال بالا یه متغیر شمارنده ساختیم و تغییر پذیرش(mut) کردیم. حالا توی یه حلقه به مقدارش اضافه کردیم و چک می کنیم که اگر برابر 10 شد ضربدر 2 کنه و مقدارش رو برگدونه در واقع با دستور break هم از حلقه خارج شدیم و هم مقداری رو برگردوندیم. که نتیجه برابر 20 میشه.
میشه با استفاده از این دستور هم عمل چک کردن و هم عمل تکرار رو انجام داد:
fn main() { let mut number = 3; while number != 0 { println!("{}!", number); number -= 1; } println!("LIFTOFF!!!"); }
حتی میشه ازش برای خواندن عناصر آرایهها هم استفاده کرد:
fn main() { let a = [10, 20, 30, 40, 50]; let mut index = 0; while index < 5 { println!("the value is: {}", a[index]); index += 1; } }
که نتیجه میشه:
the value is: 10 the value is: 20 the value is: 30 the value is: 40 the value is: 50
میشه از for هم برای حلقهها استفاده کرد. که خیلی شبیه به foreach توی زبون های دیگست.مثال زیر یه حلقست که عناصر یه آرایه رو میخونه:
fn main() { let a = [10, 20, 30, 40, 50]; for element in a.iter() { println!("the value is: {}", element); } }
آرایه ها به صورت پیش فرض قابل شمارش نیستند به این معنی که باید اون ها رو با متد ()iter. برای for قابل شمارش کرد دربارهی این موضوع بعد بیشتر صحبت میکنیم.کد بالا عناصر آرایه a رو یکی یکی واکشی میکنه و در آرایهی element میزاره و داخل حلقه توسط print چاپ میکنه.
مثال دیگه ای از for برای چاپ کردن اعداد به صورت برعکس:
fn main() { for number in (1..4).rev() { println!("{}!", number); } println!("LIFTOFF!!!"); }
یه بازه از اعداد با .. از 1 تا 4 ساختیم و داخل پرانتز قرار دادیم و بهش یه متد توکاری به نام ()rev. رو بهش دادیم یعنی به جای این که از 1 تا 4 بره،به صورت برعکس از 4 تا 1 اعداد رو چاپ میکنه.
این بخش هم تموم شد.من توی 4 قسمت مهمترین و اساسی ترین مفاهیم Rust رو گفتم.امیدوارم حالا با این مفاهیم چند تا تمرین کوچیک بنویسید و خوب تمرین کنید برای شروع میتونید از تمرینات زیر استفاده کنید:
اگر خواستید میتونید جواب ها رو توی بخش نظرات برام بفرستید.