C++ Academy · पाठ

optional मानों तक पहुँच

value_or और has_value का उपयोग करें

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

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

डीरेफ़रेंस ऑपरेटर

Optional को पढ़ने का सबसे तेज़ तरीका *opt है, लेकिन इसे तभी उपयोग करें जब आपको पूरा विश्वास हो कि इसमें मान है; इसमें कोई जाँच नहीं होती।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 10;
    if (o) std::cout << *o << "\n";
}

value() विधि

opt.value() मान लौटाता है, लेकिन optional खाली होने पर std::bad_optional_access उत्पन्न करता है। जब खाली optional को वास्तविक त्रुटि मानना हो, तब इसका उपयोग करें।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o;
    try { std::cout << o.value() << "\n"; }
    catch (const std::bad_optional_access&) { std::cout << "empty!\n"; }
}

डिफ़ॉल्ट के लिए value_or

opt.value_or(fallback) मान मौजूद होने पर रखा गया मान लौटाता है, अन्यथा fallback लौटाता है। न शाखा चुननी पड़ती है, न अपवाद सँभालना पड़ता है।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = std::nullopt;
    std::cout << o.value_or(-1) << "\n"; // -1
}

वास्तविक डेटा के साथ value_or

इसका सामान्य उपयोग अनुपस्थित कॉन्फ़िगरेशन या खोज परिणाम के लिए डिफ़ॉल्ट मान देना है।

#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> lookup(bool found) {
    if (found) return std::string("Pro");
    return std::nullopt;
}
int main() {
    std::cout << lookup(false).value_or("Free") << "\n";
}

ऐरो ऑपरेटर

वर्ग प्रकार वाले optional के लिए opt->member सदस्यों को सीधे ऐक्सेस करता है (फिर से, यह मानकर कि optional खाली नहीं है)।

#include <iostream>
#include <optional>
#include <string>
int main() {
    std::optional<std::string> o = std::string("hello");
    if (o) std::cout << o->size() << "\n";
}

ऐक्सेस से पहले सुरक्षा-जाँच

सुरक्षित तरीका है: पहले जाँच करें, फिर उपयोग करें। जाँच और ऐक्सेस को सही ढंग से मिलाने पर अपवाद और अपरिभाषित व्यवहार दोनों से बचा जा सकता है।

#include <iostream>
#include <optional>
int main() {
    std::optional<int> o = 7;
    if (o.has_value()) {
        int x = *o;
        std::cout << x * 2 << "\n";
    }
}

if में Init-Statement

आप if के init-statement का उपयोग करके एक ही पंक्ति में घोषणा और जाँच कर सकते हैं, जिससे optional की पहुँच उस शाखा तक सीमित रहती है।

#include <iostream>
#include <optional>
std::optional<int> find() { return 3; }
int main() {
    if (auto v = find(); v.has_value())
        std::cout << *v << "\n";
}

Transform (C++23)

transform जैसे मोनाडिक सहायक फ़ंक्शन तभी लागू करते हैं जब कोई मान मौजूद हो और एक नया optional लौटाते हैं। इससे गणनाओं को साफ़-सुथरे ढंग से जोड़ा जा सकता है।

जोड़ने के लिए and_then

and_then (C++23) ऐसे फ़ंक्शन को कॉल करता है जो स्वयं एक optional लौटाता है और परिणाम को समतल करता है। यह उन चरणों के लिए आदर्श है जिनमें से हर चरण विफल हो सकता है।

ऐक्सेसर चुनना

जब आपके पास उचित डिफ़ॉल्ट हो, तब value_or का उपयोग करें; जब खाली होना अपवाद योग्य त्रुटि हो, तब value() का उपयोग करें; और */-> का उपयोग केवल स्पष्ट जाँच के बाद करें।

बिना जाँच के डीरेफ़रेंस से बचें

यह पुष्टि किए बिना कि optional खाली नहीं है, कभी भी *opt को कॉल न करें। यह अपरिभाषित व्यवहार है और क्रैश का सामान्य स्रोत है।

त्वरित जाँच

Optional के ऐक्सेस के बारे में अपनी समझ जाँचिए।

पुनरावलोकन

आपने optional को ऐक्सेस करना सीखा:

  • जाँच के बाद * और -> का उपयोग करें।
  • खाली होने पर value() अपवाद उत्पन्न करता है।
  • value_or डिफ़ॉल्ट मान देता है।
  • मोनाडिक transform/and_then कार्रवाइयों को जोड़ते हैं (C++23)।
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
51
पाठ
203

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

क्या “optional मानों तक पहुँच” पाठ निःशुल्क है?

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

“optional मानों तक पहुँच” में मैं क्या सीखूँगा?

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

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“optional मानों तक पहुँच” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. optional से अनुपस्थिति दर्शाना
  2. optional मानों तक पहुँच
  3. std::expected की मूल बातें
  4. त्रुटि-संभालने के पैटर्न
← C++ Academy पर वापस जाएँ