با همه حرفایی تفکراتی که کردم ، بالاخره تصمیم گرفتم حداقل به خاطر علاقه خودمم که شده برم سراغ یادگیری زبان Rust 🦀 .
اما چون اخلاق خودم رو میشناسم و میدونم احتمال داره وسط راه رهاش کنم، تصمیم گرفتم هر روز هر چی از راست یاد میگیرم رو همینجا توی چنل بذارم.
اینطوری هم برای خودم مرور میشه و هم یه چالش جدیه که بیخیالش نشم و نصفهکاره رهاش نکنم!
اما چون اخلاق خودم رو میشناسم و میدونم احتمال داره وسط راه رهاش کنم، تصمیم گرفتم هر روز هر چی از راست یاد میگیرم رو همینجا توی چنل بذارم.
اینطوری هم برای خودم مرور میشه و هم یه چالش جدیه که بیخیالش نشم و نصفهکاره رهاش نکنم!
Tux Thoughts
Photo
بازی Guess (حدس عدد) با زبان راست ! صفحه 23 کتاب زبان برنامه نویسی راست.
ماژول io که شامل ابزار های رایجی هست که میتونیم برای مدیریت ورودی و خروجی در پروژه استفاده کنیم
در راست هرچیزی که بشه اجرا کرد باید در تابع اصلی یا تابع main قرار بگیره
با استفاده از println! میتونیم یک متن رو چاپ کنیم(ln برای اینه که وقتی چاپ شد بره خط بعدی ; و ! برای اینه که ما داریم از یک macro استفاده میکنیم اگر تابع معمولی بود نمیزاشتیمش)!
- در این خط یک متغیر میسازیم به نام guess
- از mut استفاده میکنیم که متغیرمون قابل تغیر باشه (بتونیم مقدار داخلش رو راحت تغیر بدیم یا چیزی توش بریزیم)
- و این متغیر رو از نوع String میسازیم
- از io::stdin() برای گرفتن ورودی استاندارد از کیبورد استفاده میکنیم
- از read_line استفاده میکنیم تا یک خط کامل رو بخونیم و از (&mut guess) استفاده میکنیم تا متغیر guess قابل تغیر بشه و مقداری که وارد کردیم بره داخلش
- از .expect("Failed to read line"); استفاده میکنیم تا بفهمیم ورودی که داخل متغیر ریختیم با موفقیت ریخته شده یا نه
در اخر هم ورودی رو چاپ میکنیم!
Rust Language Challenge 🦀
Tuxify ! t.me/CaptainTux
use std::io;
ماژول io که شامل ابزار های رایجی هست که میتونیم برای مدیریت ورودی و خروجی در پروژه استفاده کنیم
fn main() {}در راست هرچیزی که بشه اجرا کرد باید در تابع اصلی یا تابع main قرار بگیره
println!("Guess the number!");
println!("Please input your guess.");با استفاده از println! میتونیم یک متن رو چاپ کنیم(ln برای اینه که وقتی چاپ شد بره خط بعدی ; و ! برای اینه که ما داریم از یک macro استفاده میکنیم اگر تابع معمولی بود نمیزاشتیمش)!
let mut guess = String::new();
- در این خط یک متغیر میسازیم به نام guess
- از mut استفاده میکنیم که متغیرمون قابل تغیر باشه (بتونیم مقدار داخلش رو راحت تغیر بدیم یا چیزی توش بریزیم)
- و این متغیر رو از نوع String میسازیم
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
- از io::stdin() برای گرفتن ورودی استاندارد از کیبورد استفاده میکنیم
- از read_line استفاده میکنیم تا یک خط کامل رو بخونیم و از (&mut guess) استفاده میکنیم تا متغیر guess قابل تغیر بشه و مقداری که وارد کردیم بره داخلش
- از .expect("Failed to read line"); استفاده میکنیم تا بفهمیم ورودی که داخل متغیر ریختیم با موفقیت ریخته شده یا نه
println!("You guessed: {guess}");در اخر هم ورودی رو چاپ میکنیم!
Rust Language Challenge 🦀
Tuxify ! t.me/CaptainTux
Tux Thoughts
بازی Guess (حدس عدد) با زبان راست ! صفحه 23 کتاب زبان برنامه نویسی راست. use std::io; ماژول io که شامل ابزار های رایجی هست که میتونیم برای مدیریت ورودی و خروجی در پروژه استفاده کنیم fn main() {} در راست هرچیزی که بشه اجرا کرد باید در تابع اصلی یا تابع…
متغیرها در زبان Rust به صورت پیشفرض غیرقابلتغییر (Immutable) هستند، اما با استفاده از کلیدواژه
حالا
در واقع همون
🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux
mut میتونیم یک متغیر قابلتغییر (Mutable) تعریف کنیم.حالا
String::new() چیه؟در واقع همون
"" یا یک رشتهی خالیه؛ یعنی متغیری از جنس String که هنوز هیچ مقداری (Value) داخلش قرار نگرفته.🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux
Tux Thoughts
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
.read_line(&mut guess)
.expect("Failed to read line");
متد
حالا
در Rust مقدار
یعنی مقداری که میتونه یکی از دو حالت زیر رو داشته باشه:
حالت
حالت
حالا از متد
اگر نتیجه
اما اگه
حالا اگه
برنامه بدون مشکل کامپایل میشه ، اما Rust به ما یک Warning میده!
راست میگه : «تو مقداری داری که ممکن است شامل خطا باشه و حتماً باید تکلیفش رو مشخص کنی»
🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux
read_line فقط ورودی کاربر رو توی متغیر قرار نمیده! بلکه یک مقدار از نوع Result هم برمیگردونه.حالا
Result چیه؟در Rust مقدار
Result یک Enum (نوع شمارشی) هست. یعنی مقداری که میتونه یکی از دو حالت زیر رو داشته باشه:
حالت
Ok : اگه عملیات موفق باشه ، نتیجه Ok(Value) میشه، یعنی با موفقیت ورودی رو دریافت کردیمحالت
Err : اگه مشکلی پیش بیاد ، این حالت Err(Error) رو دریافت میکنیم، یعنی موقع ورودی گرفتن به خطایی خوردیم.حالا از متد
expect استفاده میکنیم تا مقدار Result رو بررسی کنیم:اگر نتیجه
Ok باشه، خودِ مقدار رو برمیگردونه. اما اگه
Err باشه، برنامه متوقف میشه و با عرور "Failed to read line" مواجه میشیم.حالا اگه
expect رو نذاریم چی میشه؟برنامه بدون مشکل کامپایل میشه ، اما Rust به ما یک Warning میده!
راست میگه : «تو مقداری داری که ممکن است شامل خطا باشه و حتماً باید تکلیفش رو مشخص کنی»
🦀 Rust Language Challenge
Tuxify! t.me/CaptainTux