Rust कोडिंग सीखें · पाठ

map, filter, collect

अनुक्रमों का रूपांतरण

पाठ 2, कुल 4 में से13 चरण

map, filter, collect, CoddyKit पर Rust कोडिंग सीखें का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Rust कोडिंग सीखें सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Rust कोडिंग सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

अनुक्रमों का रूपांतरण

इटरेटर पाइपलाइन में अधिकांश काम तीन विधियाँ करती हैं: map प्रत्येक आइटम को रूपांतरित करता है, filter कुछ आइटम रखता है, और collect परिणामों को किसी संग्रह में इकट्ठा करता है।

साथ मिलकर ये कई हाथ से लिखे लूप की जगह छोटी और पढ़ने में आसान श्रृंखलाएँ देती हैं।

map: एक अंदर, एक बाहर

map प्रत्येक आइटम पर क्लोज़र लागू करता है और रूपांतरित मान देता है। आइटम की संख्या समान रहती है; केवल उनके मान बदलते हैं।

यह आलसी होता है, इसलिए क्लोज़र तभी चलता है जब इटरेटर का उपभोग किया जाता है।

fn main() {
    let nums = vec![1, 2, 3];
    let doubled: Vec<i32> = nums.iter().map(|x| x * 2).collect();
    println!("{:?}", doubled);
}

map प्रकार बदल सकता है

map का आउटपुट प्रकार इनपुट के समान होना आवश्यक नहीं है। यहाँ हम संख्याओं को स्ट्रिंग में बदलते हैं।

इससे map डेटा को एक रूप से दूसरे रूप में बदलने के लिए उपयुक्त बन जाता है।

fn main() {
    let nums = vec![1, 2, 3];
    let labels: Vec<String> = nums.iter().map(|x| format!("n{}", x)).collect();
    println!("{:?}", labels);
}

filter: अपनी पसंद की चीज़ें रखें

filter ऐसा क्लोज़र लेता है जो bool लौटाता है। जिन आइटम के लिए यह true लौटाता है, वे रखे जाते हैं; बाकी हटा दिए जाते हैं।

क्लोज़र को एक संदर्भ मिलता है, इसलिए आपको अक्सर * से डीरेफ़रेंस करना या पैटर्न मिलान का उपयोग करना पड़ता है।

fn main() {
    let nums = vec![1, 2, 3, 4, 5, 6];
    let evens: Vec<i32> = nums.into_iter().filter(|x| x % 2 == 0).collect();
    println!("{:?}", evens);
}

map और filter को जोड़ना

आप अडैप्टर को स्वतंत्र रूप से जोड़ सकते हैं। क्रम महत्वपूर्ण है: प्रत्येक आइटम ऊपर से नीचे तक पूरी श्रृंखला से होकर गुजरता है।

यहाँ हम सम संख्याएँ रखते हैं, फिर बचे हुए मानों का वर्ग करते हैं।

fn main() {
    let result: Vec<i32> = (1..=6)
        .filter(|x| x % 2 == 0)
        .map(|x| x * x)
        .collect();
    println!("{:?}", result);
}

collect से Vec में इकट्ठा करना

collect एक इटरेटर का उपभोग करके एक संग्रह बनाता है। कई संग्रह प्रकार संभव होने के कारण, आप आमतौर पर लक्ष्य प्रकार का एनोटेशन देते हैं।

टर्बोफिश सिंटैक्स collect::<Vec<_>>() चर का एनोटेशन देने का एक विकल्प है।

fn main() {
    let squares = (1..=4).map(|x| x * x).collect::<Vec<i32>>();
    println!("{:?}", squares);
}

collect से String में इकट्ठा करना

collect केवल वेक्टर तक सीमित नहीं है। char का इटरेटर String में इकट्ठा किया जा सकता है।

Rust लक्ष्य प्रकार का उपयोग यह तय करने के लिए करता है कि आइटम को कैसे जोड़ा जाए।

fn main() {
    let shouted: String = "hello".chars().map(|c| c.to_ascii_uppercase()).collect();
    println!("{}", shouted);
}

collect से HashMap में इकट्ठा करना

की-वैल्यू टपल वाला इटरेटर HashMap में इकट्ठा किया जा सकता है। आइटम को zip से जोड़े या map में टपल बनाएँ।

दो समानांतर अनुक्रमों से खोज-संरचना बनाने का यह एक साफ़ तरीका है।

use std::collections::HashMap;

fn main() {
    let map: HashMap<i32, i32> = (1..=3).map(|x| (x, x * x)).collect();
    println!("{:?}", map.get(&2));
}

तीनों को एक साथ जोड़ना

एक सामान्य पाइपलाइन वाक्य की तरह पढ़ी जाती है: आइटम लें, उन्हें फ़िल्टर करें, रूपांतरित करें और इकट्ठा करें।

यहाँ हम तीन अक्षरों से लंबे शब्द रखते हैं और उन्हें बड़े अक्षरों में बदलते हैं।

fn main() {
    let words = vec!["hi", "rust", "go", "code"];
    let kept: Vec<String> = words
        .into_iter()
        .filter(|w| w.len() > 3)
        .map(|w| w.to_uppercase())
        .collect();
    println!("{:?}", kept);
}

filter_map: एक साथ फ़िल्टर और मैप करना

filter_map ऐसा क्लोज़र लागू करता है जो Option लौटाता है। Some(v) रखा और अनरैप किया जाता है; None हटा दिया जाता है।

पार्सिंग के दौरान यह विशेष रूप से उपयोगी है, जहाँ कुछ इनपुट अमान्य हो सकते हैं।

fn main() {
    let inputs = vec!["1", "two", "3"];
    let nums: Vec<i32> = inputs
        .into_iter()
        .filter_map(|s| s.parse::<i32>().ok())
        .collect();
    println!("{:?}", nums);
}

यह पैटर्न क्यों बेहतर है

map/filter/collect पाइपलाइन घोषणात्मक होती हैं: वे बताती हैं कि आपको क्या चाहिए, न कि लूप कैसे चलाना है। ये सीमा से एक अधिक या कम वाले बग और बीच की परिवर्तनशील स्थिति से बचाती हैं।

और आलस्यपूर्ण मूल्यांकन के कारण, चरणों के बीच कोई अस्थायी वेक्टर नहीं बनाया जाता।

त्वरित जाँच

अनुक्रमों के रूपांतरण के बारे में अपनी जानकारी जाँचें।

पुनरावलोकन

अब आप वास्तविक इटरेटर पाइपलाइन बना सकते हैं:

  • map प्रत्येक आइटम को रूपांतरित करता है और उसका प्रकार बदल सकता है
  • filter उन आइटम को रखता है जिनका प्रेडिकेट true होता है
  • collect परिणामों को Vec, String, HashMap और अन्य संग्रहों में इकट्ठा करता है
  • filter_map Option का उपयोग करके एक ही चरण में फ़िल्टर और मैप करता है
शुरुआत निःशुल्क

एआई शिक्षक के साथ Rust सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
39
पाठ
144

अक्सर पूछे जाने वाले प्रश्न

क्या “map, filter, collect” पाठ निःशुल्क है?

हाँ — Rust कोडिंग सीखें अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “map, filter, collect” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Rust कोडिंग सीखें पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“map, filter, collect” में मैं क्या सीखूँगा?

अनुक्रमों का रूपांतरण आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Rust कोडिंग सीखें का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Rust कोडिंग सीखें शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Rust कोडिंग सीखें शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“map, filter, collect” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Rust कोडिंग सीखें पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Rust कोडिंग सीखें पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Iterator ट्रेट
  2. map, filter, collect
  3. एडैप्टर और कंज़्यूमर
  4. कस्टम इटरेटर
← Rust कोडिंग सीखें पर वापस जाएँ