0Pricing
C++ Academy · Ders

std::expected Temelleri

Değerleri veya hataları döndürün

std::expected Temelleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. 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.

Değerler veya Hatalar

std::expected<T, E> (C++23), T türünde başarılı bir değer veya E türünde bir hata tutar. İsteğe bağlı değerden farklı olarak başarısızlığın nedenini de taşır. <expected> ekleyin.

Başarı Döndürme

Başarı durumunda değeri doğrudan döndürürsünüz; değer, "expected" türü olan T olarak saklanır.

#include <expected>
#include <iostream>
std::expected<int, std::string> parse(bool ok) {
    if (ok) return 100;
    return std::unexpected("bad input");
}
int main() {
    auto r = parse(true);
    if (r) std::cout << *r << "\n";
}

Hata Döndürme

Aynı türü döndürmeye devam ederken başarısızlığı belirtmek için hatayı std::unexpected(...) içine sarın.

#include <expected>
#include <iostream>
#include <string>
std::expected<int, std::string> div(int a, int b) {
    if (b == 0) return std::unexpected("divide by zero");
    return a / b;
}
int main() {
    auto r = div(8, 0);
    if (!r) std::cout << r.error() << "\n";
}

Başarıyı Denetleme

Sonucu bir mantıksal bağlamda veya has_value() ile sınayın. True, değeri tuttuğu; false ise hatayı tuttuğu anlamına gelir.

#include <expected>
#include <iostream>
int main() {
    std::expected<int, int> r = 5;
    std::cout << r.has_value() << "\n"; // 1
}

Değeri Okuma

Başarı değerini okumak için *r veya r.value() kullanın. Gerçekte bir hata tutuyorsa value(), std::bad_expected_access istisnasını fırlatır.

#include <expected>
#include <iostream>
int main() {
    std::expected<int, std::string> r = 7;
    if (r) std::cout << r.value() << "\n";
}

Hatayı Okuma

Sonuç hata durumundaysa r.error() hata nesnesini verir.

#include <expected>
#include <iostream>
#include <string>
std::expected<int, std::string> f() { return std::unexpected("nope"); }
int main() {
    auto r = f();
    if (!r) std::cout << "error: " << r.error() << "\n";
}

value_or Yedeği

Tıpkı isteğe bağlı değerde olduğu gibi value_or(fallback), hatayı incelemeden başarılı değeri veya varsayılanı döndürür.

#include <expected>
#include <iostream>
std::expected<int, std::string> f() { return std::unexpected("x"); }
int main() {
    std::cout << f().value_or(0) << "\n"; // 0
}

İsteğe Bağlı mı, Beklenen mi

std::optional “değer veya hiçbir şey” anlamına gelir; std::expected ise “değer veya açıklanmış bir hata” anlamına gelir. Çağıranların başarısızlık nedenini bilmesi gerektiğinde beklenen seçeneğini tercih edin.

Zengin Hata Türleri

E hata türü bir numaralandırma, yapı veya ileti dizesi olabilir; alanınızdaki başarısızlıkları en iyi açıklayan türü seçebilirsiniz.

#include <expected>
#include <iostream>
enum class Err { NotFound, Denied };
std::expected<int, Err> get(bool ok) {
    if (ok) return 1;
    return std::unexpected(Err::Denied);
}
int main() {
    auto r = get(false);
    if (!r) std::cout << (int)r.error() << "\n";
}

İstisnalar Gerekli Değil

std::expected, başarısızlıkları olağan dönüş değerleri olarak iletmenizi sağlar; istisnaların devre dışı bırakıldığı veya maliyetli olduğu yerlerde kullanışlıdır.

Kullanılabilirlik Notu

std::expected bir C++23 özelliğidir; kullanmadan önce derleyicinizin ve standart seçeneğinizin (örneğin -std=c++23) bunu desteklediğinden emin olun.

Hızlı Kontrol

std::expected konusundaki anlayışınızı kontrol edin.

Özet

std::expected hakkında şunları öğrendiniz:

  • Bir değeri (T) veya bir hatayı (E) tutar.
  • Başarıyı doğrudan, hataları std::unexpected aracılığıyla döndürün.
  • */value() ve error() ile okuyun.
  • optional'ın aksine başarısızlık nedenini taşır.

Sıkça Sorulan Sorular

“std::expected Temelleri” dersi ücretsiz mi?

Evet — “std::expected Temelleri” 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.

“std::expected Temelleri” dersinde ne öğreneceğim?

Değerleri veya hataları döndürü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 3. dersidir.

“std::expected Temelleri” 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

  1. optional ile Yokluğu Temsil Etme
  2. optional Değerlerine Erişme
  3. std::expected Temelleri
  4. Hata İşleme Örüntüleri
← C++ Academy Sayfasına Dön