Rust ir ļoti svarīga izpratne par enumu un modeļu saskaņošanu. Izpētiet efektīvas metodes abu īstenošanai.
Rust nodrošina dažādus datu tipus darbību veikšanai, sākot no pamata datu tipiem, piemēram, virknēm, veseliem skaitļiem un peldošiem punktu skaitļus saliktiem datu tipiem, piemēram, vektoriem un masīviem, saliktiem datu tipiem, piemēram, struktūrām un uzskaitījumiem.
Enums (uzskaitījumi) ir datu tips, kas ļauj attēlot fiksētu vērtību kopu, piemēram, nedēļas dienas un varavīksnes krāsu. Enums ir ērts, ja mainīgā iespējamās vērtības ir ierobežotas un zināmas.
Enumu definēšana rūsā
Enumu deklarēšana Rustā ir līdzīga enumu deklarēšana C#. Jūs izmantosit enum atslēgvārds aiz nosaukuma un cirtainu figūriekavu kopa, lai definētu uzskaitījumus. Varat definēt iespējamos variantus (entītijas) cirtainajās iekavās, izmantojot komatu kā atdalītāju.
Šeit ir nedēļas dienu saraksts:
enumDarba diena {
pirmdiena,
otrdiena,
trešdien,
ceturtdiena,
piektdiena,
sestdiena,
svētdiena,
}
The Darba diena enum apzīmē nedēļas dienas. The
varianti ir dienas nosaukumi, un tiem nav saistītu vērtību. Arī jūsu enum varianti var būt jebkuri Rūsas datu tips.Varat piekļūt variantiem, norādot varianta nosaukumu, izmantojot ceļa atdalītāju (::) operatoru sarakstā.
ļaut diena = nedēļas diena:: pirmdiena;
// statiski ievadīta mainīgā "diena" versija
ļaut diena: nedēļas diena = nedēļas diena:: pirmdiena;
Kods norāda, ka vēlaties piekļūt pirmdiena nedēļas dienu saraksta variants.
Enumu varianti un diskriminanti
Enum varianti ir saistīti ar veselu skaitļu vērtībām, ko sauc diskriminējoša. Pēc noklusējuma diskriminējošās vērtības sākas ar nulli un tiek palielinātas par 1 nākamajiem variantiem; tomēr katram variantam ir iespējams norādīt pielāgotas diskriminējošas vērtības.
Tālāk ir sniegts nedēļas dienu enum piemērs ar piešķirtajām vērtībām.
enumDarba diena {
Pirmdiena = 1,
otrdiena = 2,
trešdiena = 3,
ceturtdiena = 4,
piektdiena = 5,
sestdiena = 6,
svētdiena = 7,
}
Darba dienu sarakstam ir septiņi varianti, kas attēlo katru nedēļas dienu, un katrai dienai ir piešķirta vērtība (ko sauc par diskriminantu). Varianti ir sakārtoti secībā no pirmās līdz pēdējai nedēļas dienai.
Diskriminējošajai vērtībai var piekļūt, izmantojot varianta nosaukumu.
fngalvenais() {
println!("Pirmdiena: {}", darba diena:: pirmdiena kāi32);
println!("otrdiena: {}", darba diena:: otrdiena kāi32);
println!("trešdiena: {}", darba diena:: trešdiena kāi32);
println!("Ceturtdiena: {}", darba diena:: ceturtdiena kāi32);
println!("piektdiena: {}", darba diena:: piektdiena kāi32);
println!("Sestdiena: {}", darba diena:: sestdiena kāi32);
println!("Svētdiena: {}", darba diena:: svētdiena kāi32);
}
The println! makro tiek izmantots, lai drukātu diskriminējošus faktorus. Katra druka! makro izsaukšanai ir divi argumenti: formāta virkne un vērtība. Formāta virkne norāda, kā formatēt izvadi; vērtība ir faktiskā vērtība, kas tiek izdrukāta.
Šajā gadījumā formāta virkne ir virknes literāls, kas satur nedēļas dienas nosaukumu, un vērtība ir enum variants ar skaidru norādi uz i32 vesela skaitļa veids.
Precīza apraide uz i32 ir nepieciešama, jo Rust enumi tiek attēloti kā veseli skaitļi, bet konkrētais veselā skaitļa veids ir atkarīgs no enum lieluma. Pēc noklusējuma Rust piešķir mazāko veselo skaitļu tipu, kas var attēlot visus enum diskriminējošos faktorus. Taču šajā gadījumā vērtības vēlaties drukāt kā i32 veselus skaitļus, tāpēc tie ir skaidri jānorāda.
Lūk, darbības rezultāts galvenais funkcija:
Raksti atbilst rūsas krāsā
Rakstu saskaņošana ir rūsas kontroles struktūras konstrukcija, kas ir noderīga datu modeļu identificēšanai. Rakstu saskaņošana ļauj rakstīt kodolīgu un efektīvu kodu, strādājot ar uzlabotas datu struktūras vai veicot sarežģītas darbības.
Jūs izmantosit atbilst atslēgvārds, kam seko => raksta atdalītāju un raksta darbību. Modelis var būt jebkura Rust izteiksme, ieskaitot literāļus, mainīgos un funkciju izsaukumus.
Šeit ir atbilstības paziņojuma piemērs:
fngalvenais(){
ļaut x = 5;
atbilst x {
1 => println!("viens"),
2 => println!("divi"),
3 => println!("trīs"),
// darbojas, ja neviens no modeļiem neatbilst
_ => println!("kaut kas cits"),
}
}
The galvenais funkcija atbilst x pret vairākiem modeļiem un pēc tam izdrukā vērtību, pamatojoties uz x vērtību. Pasvītras (_) raksts ir aizstājējzīmes raksts, kas tiek izmantots kā visaptverošs gadījums gadījumos, kas netiek tieši apstrādāti.
Enums un modeļu saskaņošana
Enums un modeļu saskaņošana ir noderīga, lai izteiktu un strādātu ar uzlabotām datu struktūrām tipiski drošā un efektīvā veidā. Varat izmantot enums, lai definētu fiksētu vērtību kopu un modeļu atbilstību darbam ar šīm vērtībām.
Šeit ir varavīksnes krāsu saraksts:
enumVaravīksne {
Sarkans,
Apelsīns,
dzeltens,
zaļš,
zils,
Indigo,
Violets,
}
Katrs variants Varavīksne enum apzīmē varavīksnes krāsu. Varat izmantot raksta saskaņošanu ar atbilstības paziņojumu, lai saskaņotu modeļus ar variantu, lai kontrolētu programmas plūsmu, pamatojoties uz varavīksnes krāsu.
Šeit ir funkcija, kas iegūst krāsu variantu no Rainbow enum un izdrukā ziņojumu, pamatojoties uz krāsu.
fndrukas_krāsa(krāsa: varavīksne) {
atbilst krāsa {
Varavīksne:: Sarkans => println!("Krāsa ir sarkana!"),
Varavīksne:: Oranžs => println!("Krāsa ir oranža!"),
Varavīksne:: Dzeltens => println!("Krāsa ir dzeltena!"),
Varavīksne:: Zaļa => println!("Krāsa ir zaļa!"),
Varavīksne:: zila => println!("Krāsa ir zila!"),
Varavīksne:: Indigo => println!("Krāsa ir indigo!"),
Varavīksne:: Violeta => println!("Krāsa ir violeta!"),
}
}
fngalvenais() {
ļaut krāsa = varavīksne:: zila;
print_color (krāsa);
}
Jūs varat saņemt varianti nekad netiek konstruēti vai līdzīgi brīdinājumi, mēģinot izpildīt iepriekš minēto kodu, jo citi varianti, izņemot zilo variantu, nekad netika izveidoti šajā kodā. Tādējādi šajā gadījumā varat droši ignorēt šos brīdinājumus, jo tas ir apzināti.
The drukas_krāsa funkcija uzņem Rainbow enum tipa krāsu parametru. Atbilstības paziņojums atbilst krāsai no krāsu komplekta, kurai var piekļūt, izmantojot variantu nosaukumus. Visbeidzot, ziņojums tiek izdrukāts, pamatojoties uz atbilstošo krāsu.
Varat izmantot modeļa saskaņošanu sarežģītām darbībām, piemēram, vairākām atgriešanas vērtībām, pamatojoties uz nosacījumu.
fnaprēķināt_viļņa garumu(krāsa: varavīksne) -> u32 {
atbilst krāsa {
Varavīksne:: Sarkans => 700,
Varavīksne:: Oranžs => 590,
Varavīksne:: Dzeltens => 570,
Varavīksne:: Zaļa => 510,
Varavīksne:: zila => 475,
Varavīksne:: Indigo => 445,
Varavīksne:: Violeta => 400,
}
}
The aprēķināt_viļņa garumu funkcija izmanto varavīksnes enum tipa krāsu variantu kā parametru un atgriež neparakstītu 32 bitu veselu skaitli, kas ir rakstam atbilstošās krāsas viļņa garums.
Rūsa nodrošina arī struktūras pielāgotu tipu izveidei
Enums ir ērts, lai definētu pielāgotus veidus vairākām operācijām, īpaši gadījumos, kad lauki ir zināmi un noteikti.
Rust nodrošina arī struktūras, kuras varat izmantot, lai izveidotu pielāgotus tipus ar nosauktiem laukiem. Atšķirībā no enums, struktūras ļauj definēt dažāda veida laukus, kuriem var piekļūt un kurus var modificēt atsevišķi.