optional Değerlerine Erişme
value_or ve has_value kullanın
optional Değerlerine Erişme, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Başvuru Çözümleme İşleci
Bir isteğe bağlı değeri okumanın en hızlı yolu *opt kullanmaktır; ancak bunu yalnızca bir değer tuttuğundan eminseniz yapın, çünkü herhangi bir denetim yapılmaz.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 10;
if (o) std::cout << *o << "\n";
}value() Yöntemi
opt.value() değeri döndürür; ancak isteğe bağlı değer boşsa std::bad_optional_access istisnasını fırlatır. Boş bir isteğe bağlı değerin gerçek bir hata olduğu durumlarda kullanın.
#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"; }
}Varsayılanlar için value_or
opt.value_or(fallback), içerilen değer varsa onu, aksi takdirde yedek değeri döndürür. Dallanma veya istisna yoktur.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = std::nullopt;
std::cout << o.value_or(-1) << "\n"; // -1
}Gerçek Verilerle value_or
Yaygın bir kullanım, eksik yapılandırmalar veya aramalar için varsayılan bir değer sağlamaktır.
#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";
}Ok İşleci
Sınıf türlerindeki isteğe bağlı değerlerde opt->member, üyeye doğrudan erişir (yine boş olmadığını varsayar).
#include <iostream>
#include <optional>
#include <string>
int main() {
std::optional<std::string> o = std::string("hello");
if (o) std::cout << o->size() << "\n";
}Erişimden Önce Denetleme
Güvenli deyim şudur: denetleyin, ardından kullanın. Denetimle erişimi birleştirmek hem istisnaları hem de tanımsız davranışı önler.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 7;
if (o.has_value()) {
int x = *o;
std::cout << x * 2 << "\n";
}
}if İçinde Başlatma İfadesi
Bir if başlatma ifadesi kullanarak tek satırda bildirim yapıp denetleyebilirsiniz; böylece isteğe bağlı değerin kapsamı dal ile sınırlı kalır.
#include <iostream>
#include <optional>
std::optional<int> find() { return 3; }
int main() {
if (auto v = find(); v.has_value())
std::cout << *v << "\n";
}Dönüştürme (C++23)
transform gibi monadik yardımcılar, yalnızca bir değer mevcutsa bir işlev uygular ve yeni bir isteğe bağlı değer döndürür. Bu, hesaplamaları temiz bir şekilde zincirlemenizi sağlar.
Zincirleme için and_then
and_then (C++23), kendisi de bir isteğe bağlı değer döndüren bir işlevi çağırarak sonucu düzleştirir; her adımın başarısız olabileceği işlemler için idealdir.
Erişim Yöntemini Seçme
Makul bir varsayılanınız varsa value_or, boş olmanın istisna gerektiren bir hata olduğu durumlarda value(), yalnızca açık bir denetimden sonra da */-> kullanın.
Denetlenmemiş Başvuru Çözümlemesinden Kaçınma
İsteğe bağlı değerin boş olmadığını doğrulamadan asla *opt çağırmayın. Bu tanımsız davranıştır ve çökmelerin yaygın bir kaynağıdır.
Kısa Kontrol
İsteğe bağlı değerlere erişim hakkındaki anlayışınızı kontrol edin.
Özet
İsteğe bağlı değerlere erişmeyi öğrendiniz:
- Denetimden sonra
*ve->. value()boş durumda istisna fırlatır.value_orvarsayılan bir değer sağlar.- Monadik
transform/and_thenişlemleri zincirler (C++23).
Sıkça Sorulan Sorular
“optional Değerlerine Erişme” dersi ücretsiz mi?
Evet — “optional Değerlerine Erişme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“optional Değerlerine Erişme” dersinde ne öğreneceğim?
value_or ve has_value kullanın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“optional Değerlerine Erişme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- optional ile Yokluğu Temsil Etme
- optional Değerlerine Erişme
- std::expected Temelleri
- Hata İşleme Örüntüleri