ट्रैक
/
Rust
Rust
/
अभ्यास
/
स्वास्थ्य आँकड़े
स्वास्थ्य आँकड़े

स्वास्थ्य आँकड़े

सीखने का अभ्यास

परिचय

अक्सर यह उपयोगी होता है कि हम कई चीज़ों को एक समूह में रखें और उन समूहों को एक इकाई की तरह संभालें। Rust में ऐसे समूह को स्ट्रक्ट कहते हैं, और उसमें रखी हर चीज़ को स्ट्रक्ट का फील्ड। एक स्ट्रक्ट यह तय करता है कि कौन-कौन से फील्ड उपलब्ध रहेंगे, लेकिन स्ट्रक्ट के किसी एक खास रूप को इंस्टेंस कहा जाता है।

इसके अलावा, स्ट्रक्ट पर मेथड बनाए जा सकते हैं, जो उसके फील्ड तक पहुँच सकते हैं। ऐसी स्थिति में स्ट्रक्ट को ही self कहा जाता है। जब कोई मेथड &mut self इस्तेमाल करता है, तो फील्ड बदले जा सकते हैं, यानी म्यूटेट किए जा सकते हैं। जब कोई मेथड &self इस्तेमाल करता है, तो फील्ड बदले नहीं जा सकते: वे अपरिवर्तनीय होते हैं। परिवर्तनशीलता पर नियंत्रण रखने से बॉरो-चेकर की मदद मिलती है। इससे Rust में कॉन्करेंसी से जुड़ी गलतियों की पूरी श्रेणियाँ होती ही नहीं।

इस अभ्यास में आप एक स्ट्रक्ट पर दो तरह के मेथड बनाएँगे। पहले वाले आमतौर पर गेटर कहलाते हैं: ये स्ट्रक्ट के फील्ड बाहरी दुनिया को दिखाते हैं, पर किसी और को वह वैल्यू बदलने नहीं देते। Rust में ऐसे मेथड का नाम आमतौर पर उसी फील्ड का नाम होता है जिसे वे दिखाते हैं, यानी अगर हमारे पास एक गेटर मेथड है जो name नाम का फील्ड लाता है, तो मेथड का नाम सिर्फ name() होगा।

आप दूसरे तरह के मेथड भी बनाएँगे, जिन्हें आमतौर पर सेटर कहा जाता है। ये फील्ड की वैल्यू बदलते हैं। Rust में सेटर बहुत आम नहीं हैं। अगर किसी फील्ड को खुलकर बदला जा सकता है, तो उसे सिर्फ पब्लिक बना देना ज़्यादा आम है। फिर भी सेटर तब काम आते हैं जब फील्ड अपडेट करने का कोई साइड इफेक्ट हो, या एक्सेस कंट्रोल के लिए: pub(crate) लिखा सेटर एक ही क्रेट के दूसरे मॉड्यूल को एक प्राइवेट फील्ड अपडेट करने देता है, जिस पर बाहर की दुनिया असर नहीं डाल सकती।

स्ट्रक्ट तीन तरह के होते हैं: नामित फील्ड वाले स्ट्रक्ट, टपल स्ट्रक्ट, और यूनिट स्ट्रक्ट। इस कॉन्सेप्ट अभ्यास में हम पहले रूप को देखेंगे: नामित फील्ड वाले स्ट्रक्ट।

स्ट्रक्ट struct कीवर्ड से बनते हैं, जिसके बाद उस टाइप का बड़े अक्षर से शुरू होने वाला नाम आता है जिसे यह स्ट्रक्ट बता रहा है:

struct Item {}

इसके बाद और टाइप स्ट्रक्ट के अंदर उसके फील्ड के रूप में जोड़े जाते हैं, और हर फील्ड का अपना टाइप होता है:

struct Item {
    name: String,
    weight: f32,
    worth: u32,
}

अंत में, स्ट्रक्ट पर impl ब्लॉक के अंदर मेथड बनाए जा सकते हैं:

impl Item {
    // initializes and returns a new instance of our Item struct
    fn new() -> Self {
        todo!()
    }
}

स्ट्रक्ट के सिंटैक्स का यह छोटा-सा परिचय हो जाने के बाद, चलिए इस अभ्यास के निर्देश पर एक नज़र डालिए!

निर्देश

आप एक हेल्थ-मॉनिटरिंग सिस्टम बना रहे हैं। इसी काम के लिए आपको उपयोगकर्ताओं के स्वास्थ्य के आँकड़ों का हिसाब रखना है।

आपकी शुरुआत एक impl ब्लॉक में दिए गए कुछ अधूरे फंक्शनों से होगी। इसके अलावा नीचे दी गई स्ट्रक्चर परिभाषा भी है:

pub struct User {
    name: String,
    age: u32,
    weight: f32,
}

आपको impl ब्लॉक में परिभाषित User struct के अधूरे मेथड लागू करने हैं।

उदाहरण के लिए, new मेथड को दिए गए नाम, उम्र और वज़न की वैल्यू के साथ User स्ट्रक्चर का एक इंस्टेंस लौटाना चाहिए।

let mut bob = User::new(String::from("Bob"), 32, 155.2);
// Returns: a User with name "Bob", age 32, and weight 155.2

weight मेथड को User का वज़न लौटाना चाहिए।

bob.weight();
// Returns: 155.2

set_age मेथड को User की उम्र तय करनी चाहिए।

bob.set_age(33);
// Updates Bob's age to 33; happy birthday Bob!

मज़े कीजिए!

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Rust Exercism

स्वास्थ्य आँकड़े शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Rust को 99 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।