ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 4 · 2లో పాఠం 2కోర్సులో 8/14~12 min
మాడ్యూల్ పాఠాలు (2/2)

పద్ధతులు మరియు ఇంప్ల్ బ్లాక్‌లు

రస్ట్‌లో, పద్ధతులు ఫంక్షన్‌ల మాదిరిగానే ఉంటాయి, కానీ అవి స్ట్రక్ట్ (లేదా ఎన్‌యూమ్ లేదా లక్షణం) సందర్భంలో నిర్వచించబడతాయి మరియు వాటి మొదటి పరామితి ఎల్లప్పుడూ self, ఇది పద్ధతిని పిలుస్తున్న స్ట్రక్ట్ యొక్క ఉదాహరణను సూచిస్తుంది.

Impl తో పద్ధతులను నిర్వచించడం

నిర్మాణంపై పద్ధతులను నిర్వచించడానికి, మేము నిర్మాణం పేరుతో impl (అమలు) బ్లాక్‌ని ఉపయోగిస్తాము:

Rust
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__ని వాటి మొదటి పరామితిగా అంగీకరించవు అనుబంధ ఫంక్షన్‌లు (ఇతర భాషలలో స్టాటిక్ పద్ధతులకు సమానం) అంటారు.

నిర్మాణం యొక్క కొత్త ఉదాహరణలను తిరిగి ఇవ్వడానికి అవి తరచుగా కన్స్ట్రక్టర్‌లుగా ఉపయోగించబడతాయి. వారికి కాల్ చేయడానికి, డబుల్ కోలన్ :: సింటాక్స్ ఉపయోగించండి:

Rust
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):

Rust
impl Rectangle {
    fn double_size(&mut self) {
        self.width *= 2;
        self.height *= 2;
    }
}

మీరే ప్రయత్నించండి

వ్యాయామం#rust.m4.l2.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

&self తీసుకొని u32 (వెడల్పు మరియు ఎత్తు యొక్క గుణకారం) తిరిగి ఇచ్చే ప్రాంత పద్ధతిని నిర్వచించడం ద్వారా impl బ్లాక్‌ను పూర్తి చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

`fn ప్రాంతం(&self) -> u32 { self.width \* self.height }`inside the`impl Rectangle` బ్లాక్‌ని వ్రాయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#rust.m4.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

Impl దీర్ఘచతురస్రం లోపల స్క్వేర్ అనుబంధిత ఫంక్షన్‌ను నిర్వచించండి, ఇది పరిమాణాన్ని పొందుతుంది: u32 మరియు పరిమాణానికి సమానమైన వెడల్పు మరియు ఎత్తుతో దీర్ఘచతురస్ర ఉదాహరణను అందిస్తుంది.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

`fn స్క్వేర్ (పరిమాణం: u32) -> దీర్ఘచతురస్రం {దీర్ఘచతురస్రం {వెడల్పు: పరిమాణం, ఎత్తు: పరిమాణం } }`ఇంప్ల్` బ్లాక్ లోపల వ్రాయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#rust.m4.l2.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

Impl బ్లాక్ లోపల దీర్ఘచతురస్రానికి స్కేల్ మ్యుటేటర్ పద్ధతిని జోడించండి. స్కేల్ పద్ధతి తప్పనిసరిగా స్వీయ (&మట్ సెల్ఫ్) మరియు కారకం: u32 పారామీటర్‌కు మార్చదగిన సూచనను తీసుకోవాలి మరియు దీర్ఘచతురస్రం యొక్క వెడల్పు మరియు ఎత్తు రెండింటినీ కారకం ద్వారా గుణించాలి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

వాటిని `కారకం`తో గుణించడం ద్వారా స్వీయ.వెడల్పు`మరియు`సెల్ఫ్.ఎత్తు`ని నవీకరించడానికి `fn స్కేల్ (&మట్ సెల్ఫ్, ఫ్యాక్టర్: u32)`ని అమలు చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది