தொகுதி பாடங்கள் (2/2)
முறைகள் மற்றும் impl தொகுதிகள்
ரஸ்டில், முறைகள் செயல்பாடுகளைப் போலவே இருக்கும், ஆனால் அவை ஒரு struct (அல்லது enum அல்லது பண்பு) சூழலில் வரையறுக்கப்படுகின்றன, மேலும் அவற்றின் முதல் அளவுரு எப்போதும் 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
ஒரு முறை struct இன் புலங்களை மாற்ற வேண்டும் என்றால், அது அதன் முதல் அளவுருவை &mut self என அறிவிக்க வேண்டும். முறை அழைக்கப்படும் நிகழ்வே மாறக்கூடியதாக அறிவிக்கப்பட வேண்டும் (let mut):
impl Rectangle {
fn double_size(&mut self) {
self.width *= 2;
self.height *= 2;
}
}நீங்களே முயற்சி செய்து பாருங்கள்
&self எடுத்து u32 (அகலம் மற்றும் உயரத்தின் பெருக்கல்) வழங்கும் பகுதி முறையை வரையறுப்பதன் மூலம் impl தொகுதியை முடிக்கவும்.
குறிப்பைக் காட்டு
`fn area(&self) -> u32 { self.width \* self.height }`inside the`impl Rectangle` தொகுதி என எழுதவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
Impl செவ்வகத்திற்குள் சதுர தொடர்புடைய செயல்பாட்டை வரையறுக்கவும், இது அளவைப் பெறுகிறது: u32 மற்றும் அளவுக்கு சமமான அகலம் மற்றும் உயரத்துடன் ஒரு செவ்வக நிகழ்வை வழங்குகிறது.
குறிப்பைக் காட்டு
`fn சதுரம்(அளவு: u32) -> செவ்வகம் { செவ்வகம் { அகலம்: அளவு, உயரம்: அளவு } }``impl` தொகுதிக்குள் எழுதவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
இம்ப்ல் பிளாக்கிற்குள் செவ்வகத்திற்கு அளவிலான பிறழ்வு முறையைச் சேர்க்கவும். அளவீட்டு முறையானது self (&mut self) மற்றும் ஒரு காரணி: u32 அளவுருவுக்கு மாறக்கூடிய குறிப்பை எடுக்க வேண்டும், மேலும் செவ்வகத்தின் அகலம் மற்றும் உயரம் இரண்டையும் காரணியால் பெருக்க வேண்டும்.
குறிப்பைக் காட்டு
`ஃபாக்டர்`மூலம் பெருக்குவதன் மூலம்`self.width`and`self.height`ஐ மேம்படுத்த `fn scale(&mut self, factor: u32)`ஐ செயல்படுத்தவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்