ट्रैक
/
Cairo
Cairo
/
अभ्यास
/
लाल बनाम नीला: डार्विन शैली
लाल बनाम नीला: डार्विन शैली

लाल बनाम नीला: डार्विन शैली

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

परिचय

मॉड्यूल

मॉड्यूल की मदद से संबंधित कोड को एक साथ समूहित किया जाता है और नामों के टकराव से बचा जाता है। सबसे मामूली कोडबेस को छोड़कर लगभग हर कोडबेस में मॉड्यूल मौजूद होते हैं।

इसका सिंटैक्स इस प्रकार है:

mod my_module {
    pub struct MyStruct {}

    pub struct OtherClass {}
}

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

mod my_module {
    #[derive(Drop)]
    pub struct MyStruct {}

    pub struct Foo {}

    #[generate_trait]
    pub impl FooImpl of FooTrait {
        fn bar() {
            let baz = MyStruct {};
        }
    }
}

#[derive(Drop)]
pub struct Qux {}

#[generate_trait]
impl QuxImpl of QuxTrait {
    fn box() {
        let nux = my_module::MyStruct {};
    }
}

mod other_module {
    use super::my_module::*;

    #[derive(Drop)]
    pub struct Tix {}

    #[generate_trait]
    pub impl TixImpl of TixTrait {
        fn jeg() {
            let lor = MyStruct {};
        }
    }
}

आप use core::array::ArrayTrait as Arr; सिंटैक्स की मदद से किसी मॉड्यूल या टाइप को एक एलियस दे सकते हैं। इसके बाद जहाँ भी वह मॉड्यूल या टाइप इस्तेमाल किया जा सकता है, वहाँ आप उस एलियस का इस्तेमाल कर सकते हैं।

निर्देश

प्रबंधन एक रिमोट कंट्रोल कार परियोजना पर डार्विन के सिद्धांत लागू करना शुरू कर रहा है। डेवलपरों को दो टीमों में बाँट दिया गया है, Red और Blue, और उन्हें यह काम दिया गया है कि वे एक-दूसरे से स्वतंत्र रहकर डिज़ाइन को बेहतर बनाएँ। उन्हें दूसरी टीम के डिज़ाइन से जुड़े फैसलों की चिंता करने की ज़रूरत नहीं है। आपसे कहा गया है कि आप कोड को देखें और यह पता लगाएँ कि परीक्षण के लिए दोनों टीमों के काम को किस तरह सबसे अच्छे ढंग से जोड़ा जा सकता है।

1. दोनों टीमों के कोड को अलग करने का अधिक उपयुक्त तरीका खोजिए

कोड का उद्देश्य बेहतर ढंग से व्यक्त करने के लिए मॉड्यूल का उपयोग कीजिए।

अभी Motor और Telemetry जैसे ज़रूरी टाइपों के नाम के आगे संबंधित टीम के रंग का प्रीफिक्स लगाया गया है, जिससे वे <Color>RemoteControlCarTeam बन जाते हैं। ऐसा खुद RemoteControlCar के साथ भी किया गया है। इस प्रीफिक्स का एकमात्र उद्देश्य यह है कि एक ही नाम वाले टाइप एक ही प्रोग्राम में साथ-साथ रह सकें। मॉड्यूल का उपयोग करके इसे बेहतर ढंग से व्यक्त किया जा सकता है। आप देखेंगे कि इन उद्देश्यों के लिए टाइपों के आगे प्रीफिक्स लगाने की तुलना में मॉड्यूल में ज़्यादा फायदे हैं।

2. नाम रखने के तरीके को आसान बनाइए

प्रबंधन चाहता है कि परिभाषाओं में टीमों के नाम "Red Remote Control Car Team" और "Blue Remote Control Car Team" रखे जाएँ, और इन लंबे नामों का इस्तेमाल कोड में भी किया जाए। लेकिन टीमों का उल्लेख करते समय ये नाम काफी भारी पड़ते हैं।

जिस मॉड्यूल में आप कारें बनाएँगे, उसके अंदर छोटे आइडेंटिफायर "Red" और "Blue" इस्तेमाल करने का तरीका खोजिए।

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

लाल बनाम नीला: डार्विन शैली शुरू करने के लिए तैयार हैं?

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