Rust: алғашқы қадамнан жеке жоспарлау құралына дейін 9-сабақ (барлығы 10)
Айнымалылар, мәндер және деректер түрлері
Мәнді болжау және өзгертуді қайта жариялаудан ажырату.
Мәтін ИИ көмегімен аударылды.
Алғышарт: 1–8 сабақ. Басқаша айтылмаса, organizer ішінде жұмыс істеңіз.
Бұл не үшін керек?
Мән — нақты дерек, мысалы 2 саны. Айнымалы атауды мәнмен байланыстырады. Оны дерекке арналған белгісі бар орынға ұқсатуға болады. Кейін бұл ұқсатудың шегін көреміз: атау әрдайым тәуелсіз көшірмесі бар бөлек қорап емес.
Деректер түрі рұқсат етілген мәндер мен амалдарды анықтайды. Оны мазмұнға қойылған ережеге ұқсатыңыз: санға есептеу, мәтінге мәтіндік амалдар қолданылады. Атаудың өзі түрді анықтамайды.
Алдымен тұтас көрініс
src/main.rs ауыстырып сақтаңыз, organizer ішінен cargo run орындаңыз:
fn main() {
let mut count: u32 = 2;
println!("Бұрын: {count}");
count = 3;
println!("Қазір: {count}");
}
Нәтиже:
Бұрын: 2
Қазір: 3
Жариялауды бөліп оқимыз
let айнымалыны жариялайды. mut оған жаңа мән меншіктеуге рұқсат береді. count — таңдаған атауымыз, мағынасы «сан». : u32 — түрді ашық көрсету, 32 биттік таңбасыз бүтін санды таңдау. «Таңбасыз» дегеніміз — теріс мәнсіз. Бит екі күйдің бірін қабылдайтын екілік бірлік; бит саны мәндер ауқымын шектейді. Нақты ауқымдар 10-сабақта беріледі. = мәнді меншіктейді, теңдігін сұрамайды. 2 — сандық литерал; ; нұсқауды аяқтайды.
println! мәтініндегі {count} орнына айнымалы мәні қойылады. Жол ішіндегі бұл жақшалар Rust блогы емес. count = 3 мәнді өзгертеді, бірақ атауы мен түрін өзгертпейді. mut болмаса, қайта меншіктеуге тыйым салынады.
Түрді автоматты анықтау
Кейде түрді жазбай қалдыруға болады: компилятор оны мән мен қолданылуына қарап анықтайды. Бұл — түрді автоматты анықтау, түрдің жоқтығы емес. Басқа шектеу болмаса, let count = 2 бүтін санға i32 түрін таңдайды; ол теріс мәндерге де рұқсат береді. Оқу санауышында u32 түрін ашық көрсетіп, мәнмәтінді жорамалдауды талап етпейміз.
true және false — ақиқат пен жалғанды білдіретін bool мәндері. ‘A’ — char, Unicode жүйесіндегі бір рұқсат етілген кодтық мән. Unicode — таңбаларды ортақ белгілеу жүйесі; экрандағы бір таңба бірнеше кодтық мәннен тұруы мүмкін. Мұны мәтін сабағында қайталаймыз. “Rust” — &str түріндегі жолдық литерал, яғни мәтінге сілтеме, өсетін жол емес. Дара және қос тырнақша әртүрлі мағына береді. Мәтінге иелік етуді 22-сабақта, логикалық амалдарды 11-сабақта қараймыз. Қазір түрлер тек сандармен шектелмейтінін түсіну керек.
Бір шағын бағдарламада бірнеше түрді тексеріңіз. true экранға true болып шығады: Rust логикалық мәнді бет тіліне аудармайды. ready, mark және title атаулары «дайын», «белгі» және «атау» мағынасында таңдалды. println! мәтініндегі ирек жақшалар жоғарыдағы {count} сияқты атауы берілген мәнді кірістіреді.
fn main() {
let ready: bool = true;
let mark: char = 'A';
let title: &str = "Rust";
println!("{ready}");
println!("{mark}");
println!("{title}");
}
true
A
Rust
Атауды қайта жариялау және көріну аймағы
Сол атаумен тағы let жазу жаңа байланыс жасайды. Мұны атауды қайта жариялау (shadowing) деп атаймыз; ол бұрынғы айнымалыға мән меншіктеу емес. Көріну аймағы — атауды қолдануға болатын бағдарлама бөлігі. Ішкі блокта өз айнымалысы болып, одан шыққанда сыртқысы қайта көрінеді:
fn main() {
let count = 2;
{
let count = 3;
println!("Ішінде: {count}");
}
println!("Сыртында: {count}");
}
Нәтиже:
Ішінде: 3
Сыртында: 2
const құрастыру кезінде есептелетін тұрақтыны жариялайды. Түрі міндетті түрде көрсетіледі, mut қолданылмайды. Ал кәдімгі өзгермейтін айнымалы мәнді орындалу кезінде алуы мүмкін; бұлар бір ұғым емес. Тұрақты атауы әдетте бас латын әріптерімен жазылып, сөздері _ арқылы бөлінеді. DAILY_LIMIT — «күндік шек».
const DAILY_LIMIT: u32 = 5;
fn main() {
println!("Жоспар: {DAILY_LIMIT}");
}
Нәтиже:
Жоспар: 5
Әдейі қате мысалда өзгертуге рұқсат берілмеген. Нәтиже орнына E0384 күтіледі:
fn main() {
let count = 2;
println!("Бұрын: {count}");
count = 3;
println!("Қазір: {count}");
}
Тірек сызба
Мән → атау → түр → рұқсат етілген амал. let байланыстырады; mut қайта меншіктеуге рұқсат береді; жаңа let қайта жариялайды; блок көріну аймағын шектейді; const тұрақты жасайды.
Жаттығу
- Ішкі блоктан кейін сыртқы count мәнін болжаңыз.
- Кейін 5 меншіктеу үшін let ___ count: u32 = 4; жолын толықтырыңыз.
- Айнымалыны тұрақтыға айналдырмай, E0384 қатесін түзетіңіз.
Тапсырма
Міндетті. Өзгертуге болатын u32 санауышын 4 мәнімен жасаңыз. «Бұрын: 4» шығарып, 5 меншіктеңіз, «Қазір: 5» шығарыңыз. Бұл неліктен қайта жариялау емес екенін түсіндіріңіз.
Өз деректеріңізбен. Басқа екі шағын теріс емес сан таңдаңыз.
Көмек және үлгі жауап
Үлгіде бір ғана let бар, кейін мән меншіктеледі. Жаттығу жауабы: сыртқы мән 2 болып қалады; бос орынға mut керек; өзгертуге рұқсат қатені түзетеді. Айырмасы түсініксіз болса, екі мысалды бөлек қайталаңыз, содан кейін арифметикаға өтіңіз.
fn main() {
let mut count: u32 = 4;
println!("Бұрын: {count}");
count = 5;
println!("Қазір: {count}");
}
Күтілетін нәтиже:
Бұрын: 4
Қазір: 5
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.