0Pricing
C++ Academy · Pelajaran

Mengakses Nilai optional

Gunakan value_or dan has_value

Mengakses Nilai optional adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Operator Dereferensi

Cara tercepat untuk membaca optional adalah *opt, tetapi hanya jika Anda yakin optional tersebut menyimpan nilai; cara ini tidak melakukan pemeriksaan.

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

Metode value()

opt.value() mengembalikan nilai, tetapi melempar pengecualian std::bad_optional_access jika optional kosong. Gunakan saat optional kosong merupakan kesalahan nyata.

#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 untuk Nilai Bawaan

opt.value_or(fallback) mengembalikan nilai yang dikandung jika tersedia; jika tidak, mengembalikan nilai cadangan. Tidak perlu percabangan atau pengecualian.

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

value_or dengan Data Nyata

Penggunaan yang umum adalah menyediakan nilai bawaan untuk konfigurasi atau hasil pencarian yang tidak ditemukan.

#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";
}

Operator Panah

Untuk optional yang berisi tipe kelas, opt->member mengakses anggota secara langsung (dengan asumsi optional tidak kosong).

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

Lakukan Penjagaan sebelum Mengakses

Idiom yang aman adalah: periksa, lalu gunakan. Menggabungkan pemeriksaan dan akses menghindari pengecualian sekaligus perilaku tidak terdefinisi.

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

Pernyataan Inisialisasi dalam if

Anda dapat mendeklarasikan dan memeriksa dalam satu baris menggunakan pernyataan inisialisasi pada if, sehingga cakupan optional tetap terbatas pada cabang tersebut.

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

Transformasi (C++23)

Pembantu monadik seperti transform menerapkan fungsi hanya jika nilai tersedia, lalu mengembalikan optional baru. Cara ini merangkai komputasi dengan rapi.

and_then untuk Perangkaian

and_then (C++23) memanggil fungsi yang juga mengembalikan optional dan meratakan hasilnya, sehingga ideal untuk langkah-langkah yang masing-masing mungkin gagal.

Memilih Aksesori

Gunakan value_or jika Anda memiliki nilai bawaan yang masuk akal, value() jika kondisi kosong merupakan kesalahan yang layak menghasilkan pengecualian, dan */-> hanya setelah pemeriksaan eksplisit.

Hindari Dereferensi Tanpa Pemeriksaan

Jangan pernah memanggil *opt tanpa memastikan bahwa optional tidak kosong. Tindakan tersebut merupakan perilaku tidak terdefinisi dan sumber kerusakan yang umum.

Pemeriksaan Singkat

Periksa pemahaman Anda tentang akses optional.

Rangkuman

Anda telah mempelajari cara mengakses optional:

  • * dan -> setelah pemeriksaan.
  • value() melempar pengecualian jika kosong.
  • value_or menyediakan nilai bawaan.
  • transform/and_then monadik merangkai operasi (C++23).

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengakses Nilai optional” gratis?

Ya — teks lengkap “Mengakses Nilai optional” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengakses Nilai optional”?

Gunakan value_or dan has_value Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Mengakses Nilai optional” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Merepresentasikan Ketiadaan dengan optional
  2. Mengakses Nilai optional
  3. Dasar-Dasar std::expected
  4. Pola Penanganan Error
← Kembali ke C++ Academy