మాడ్యూల్ పాఠాలు (2/2)
పద్ధతులు మరియు ఇంప్ల్ బ్లాక్లు
రస్ట్లో, పద్ధతులు ఫంక్షన్ల మాదిరిగానే ఉంటాయి, కానీ అవి స్ట్రక్ట్ (లేదా ఎన్యూమ్ లేదా లక్షణం) సందర్భంలో నిర్వచించబడతాయి మరియు వాటి మొదటి పరామితి ఎల్లప్పుడూ self, ఇది పద్ధతిని పిలుస్తున్న స్ట్రక్ట్ యొక్క ఉదాహరణను సూచిస్తుంది.
Impl తో పద్ధతులను నిర్వచించడం
నిర్మాణంపై పద్ధతులను నిర్వచించడానికి, మేము నిర్మాణం పేరుతో impl (అమలు) బ్లాక్ని ఉపయోగిస్తాము:
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
// This is an instance method. It takes &self for reading.
fn area(&self) -> u32 {
self.width * self.height
}
}
fn main() {
let rect = Rectangle { width: 30, height: 50 };
// Call the method using dot notation
println!("The area is: {}", rect.area());
}అసోసియేటెడ్ (స్టాటిక్) విధులు
impl బ్లాక్లో నిర్వచించబడిన విధులు AGYTOK_INLINE_3__ని వాటి మొదటి పరామితిగా అంగీకరించవు అనుబంధ ఫంక్షన్లు (ఇతర భాషలలో స్టాటిక్ పద్ధతులకు సమానం) అంటారు.
నిర్మాణం యొక్క కొత్త ఉదాహరణలను తిరిగి ఇవ్వడానికి అవి తరచుగా కన్స్ట్రక్టర్లుగా ఉపయోగించబడతాయి. వారికి కాల్ చేయడానికి, డబుల్ కోలన్ :: సింటాక్స్ ఉపయోగించండి:
impl Rectangle {
// Associated function
fn square(size: u32) -> Rectangle {
Rectangle {
width: size,
height: size,
}
}
}
fn main() {
// Call the associated function
let sq = Rectangle::square(10);
}రాష్ట్రాన్ని సవరించే పద్ధతులు: &mut self
ఒక పద్ధతికి స్ట్రక్ట్ ఫీల్డ్లను సవరించాల్సిన అవసరం ఉన్నట్లయితే, అది తప్పనిసరిగా దాని మొదటి పరామితిని &mut selfగా ప్రకటించాలి. పద్ధతిని పిలిచే సందర్భం తప్పనిసరిగా మార్చదగినదిగా ప్రకటించబడాలి (let mut):
impl Rectangle {
fn double_size(&mut self) {
self.width *= 2;
self.height *= 2;
}
}మీరే ప్రయత్నించండి
&self తీసుకొని u32 (వెడల్పు మరియు ఎత్తు యొక్క గుణకారం) తిరిగి ఇచ్చే ప్రాంత పద్ధతిని నిర్వచించడం ద్వారా impl బ్లాక్ను పూర్తి చేయండి.
సూచనను చూపించు
`fn ప్రాంతం(&self) -> u32 { self.width \* self.height }`inside the`impl Rectangle` బ్లాక్ని వ్రాయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
Impl దీర్ఘచతురస్రం లోపల స్క్వేర్ అనుబంధిత ఫంక్షన్ను నిర్వచించండి, ఇది పరిమాణాన్ని పొందుతుంది: u32 మరియు పరిమాణానికి సమానమైన వెడల్పు మరియు ఎత్తుతో దీర్ఘచతురస్ర ఉదాహరణను అందిస్తుంది.
సూచనను చూపించు
`fn స్క్వేర్ (పరిమాణం: u32) -> దీర్ఘచతురస్రం {దీర్ఘచతురస్రం {వెడల్పు: పరిమాణం, ఎత్తు: పరిమాణం } }`ఇంప్ల్` బ్లాక్ లోపల వ్రాయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
Impl బ్లాక్ లోపల దీర్ఘచతురస్రానికి స్కేల్ మ్యుటేటర్ పద్ధతిని జోడించండి. స్కేల్ పద్ధతి తప్పనిసరిగా స్వీయ (&మట్ సెల్ఫ్) మరియు కారకం: u32 పారామీటర్కు మార్చదగిన సూచనను తీసుకోవాలి మరియు దీర్ఘచతురస్రం యొక్క వెడల్పు మరియు ఎత్తు రెండింటినీ కారకం ద్వారా గుణించాలి.
సూచనను చూపించు
వాటిని `కారకం`తో గుణించడం ద్వారా స్వీయ.వెడల్పు`మరియు`సెల్ఫ్.ఎత్తు`ని నవీకరించడానికి `fn స్కేల్ (&మట్ సెల్ఫ్, ఫ్యాక్టర్: u32)`ని అమలు చేయండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది