முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 5 · பாடம் 2 இன் 2பாடத்திட்டத்தில் 10/14~15 min
தொகுதி பாடங்கள் (2/2)

பண்புகள் மற்றும் குணாதிசய எல்லைகள்

பண்புகள் ஒரு குறிப்பிட்ட வகையின் நடத்தையை வரையறுக்கிறது மற்றும் பிற வகைகளுடன் பகிர்ந்து கொள்ளலாம். பிற நிரலாக்க மொழிகளில் உள்ள இடைமுகங்களைப் போலவே, ஒரு குறிப்பிட்ட பொதுவான செயல்பாடு அல்லது இடைமுகத்தைக் குறிக்கும் முறைகளின் தொகுப்பை வரையறுக்க பண்புகளைப் பயன்படுத்தலாம்.

பண்பு வரம்புகள் ஒரு பொதுவான வகை ஒரு குறிப்பிட்ட பண்பைச் செயல்படுத்த வேண்டும் என்பதைக் குறிப்பிட அனுமதிக்கிறது, தொகுக்கும் நேரத்தில் தேவையான முறைகள் கிடைக்கின்றன என்பதை உறுதிப்படுத்துகிறது.


ஒரு பண்பை வரையறுத்தல் மற்றும் செயல்படுத்துதல்

ஒரு பண்பை வரையறுக்க, நாங்கள் trait முக்கிய சொல்லைப் பயன்படுத்துகிறோம், அதைத் தொடர்ந்து செயல்படுத்தும் வகைகளை வரையறுக்க வேண்டிய முறைகளின் கையொப்பங்கள்:

Rust
pub trait Summary {
    fn summarize(&self) -> String;
}

ஒரு உறுதியான வகைக்கு ஒரு பண்பைச் செயல்படுத்த, நாங்கள் தொடரியல் impl TraitName for TypeName ஐப் பயன்படுத்துகிறோம்:

Rust
pub struct NewsArticle {
    pub headline: String,
    pub content: String,
}

impl Summary for NewsArticle {
    fn summarize(&self) -> String {
        format!("{}", self.headline)
    }
}

பண்பு எல்லைகள்

பொதுவான செயல்பாடுகளை எழுதும் போது, ​​குறிப்பிட்ட பண்பைச் செயல்படுத்துவதை உறுதிசெய்ய வகை அளவுருக்களை நாம் கட்டுப்படுத்தலாம். நிலையான தொடரியல் <T: Trait>:

Rust
pub fn notify<T: Summary>(item: &T) {
    println!("Notification: {}", item.summarize());
}

மாற்றாக, மிகவும் சிக்கலான கையொப்பங்களுக்கு, நாம் where விதியைப் பயன்படுத்தலாம்:

Rust
pub fn notify_advanced<T>(item: &T)
where
    T: Summary
{
    println!("Notification: {}", item.summarize());
}

நீங்களே முயற்சி செய்து பாருங்கள்

பயிற்சி 1: சுருக்கப் பண்பு

உடற்பயிற்சி#rust.m5.l2.e1
முயற்சிகள்: 0ஏற்றுகிறது…

முறை கையொப்பம் fn சுருக்கம்(&self) -> சரம்; அடுத்து, ஸ்டிரிங் வகையின் தலைப்புப் புலத்துடன் கட்டமைக்கப்பட்ட செய்திக் கட்டுரையை வரையறுத்து, அதற்கான சுருக்கப் பண்பைச் செயல்படுத்தவும், இதனால் சுருக்க முறையானது தலைப்புப் புலத்தின் மதிப்பை வழங்கும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`சுருக்கம்`பண்பு மற்றும்`செய்திகட்டுரை`கட்டமைப்பை வரையறுக்கவும். செய்திக் கட்டுரைக்கான`impl சுருக்கம்` என்ற புலத்தை குளோனிங் செய்வதன் மூலம் செயல்படுத்தவும்`self.headline.clone()`.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

பயிற்சி 2: அச்சு_சுருக்கத்துடன் பண்பு எல்லைகள்

உடற்பயிற்சி#rust.m5.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

முந்தைய பயிற்சியின் குறியீட்டின் அடிப்படையில், &T வகையின் அளவுரு உருப்படியை ஏற்கும் print_summary<T> என்ற பொதுச் செயல்பாட்டை வரையறுக்கவும். T ஆனது சுருக்கப் பண்பைச் செயல்படுத்த வேண்டும் என்பதற்காக பிணைக்கப்பட்ட பண்பைப் பயன்படுத்தவும். செயல்பாட்டின் உள்ளே, item.summarize() மூலம் வழங்கப்பட்ட முடிவை அச்சிடுங்கள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`fn print_summary<T: Summary>(உருப்படி: &T)`மற்றும் invoke`item.summarize()`inside the`println!` என்ற கையொப்பத்தைப் பயன்படுத்தவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

பயிற்சி 3: பண்புகளைப் பயன்படுத்தி பகுதி கணக்கீடு

உடற்பயிற்சி#rust.m5.l2.e3
முயற்சிகள்: 0ஏற்றுகிறது…

Fn பகுதி(&self) -> f64; என்ற முறையைக் கொண்டு Area என்ற பண்பை வரையறுக்கவும். f64 வகையின் ஆரம் புலத்தைக் கொண்ட ஒரு struct Circle ஐ உருவாக்கி, பரப்பைக் கணக்கிடுவதன் மூலம் அதற்கான பகுதிப் பண்பைச் செயல்படுத்தவும் (சூத்திரம்: ஆரம் * ஆரம் * 3.14159).

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`பகுதி`பண்பு மற்றும்`வட்டம்`கட்டமைப்பை வரையறுக்கவும். வட்டப் பகுதி சூத்திரத்தைப் பயன்படுத்தி`பகுதி(&சுய)` செயல்படுத்தவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்