Operator Penanganan Null
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 27 dari 110.
Selain ?. dan !, Dart menyediakan operator tambahan yang membuat penggunaan nilai nullable lebih ringkas. Operator null-aware ini membantumu menulis kode yang lebih rapi saat menangani nilai yang berpotensi null.
Operator null-coalescing ?? mengembalikan nilai di sebelah kiri jika nilainya bukan null. Jika tidak, operator ini mengembalikan nilai di sebelah kanan:
String? nickname;
String displayName = nickname ?? 'Guest';
print(displayName); // Guest
nickname = 'Alex';
displayName = nickname ?? 'Guest';
print(displayName); // AlexOperator penugasan yang memperhatikan null ??= menetapkan nilai hanya jika variabel saat ini bernilai null:
String? username;
username ??= 'Anonymous';
print(username); // Anonymous
username ??= 'NewName';
print(username); // Masih Anonymous (nilainya bukan null)Kamu dapat merangkai operator akses yang memperhatikan null ?. untuk property bertingkat:
String? city = user?.address?.city; // Tetap aman meskipun user atau address bernilai nullOperator-operator ini dapat digunakan bersama dengan baik. Misalnya, kamu dapat mengakses property nullable dan memberikan nilai default:
String greeting = user?.name ?? 'Stranger';
// Jika user bernilai null ATAU user.name bernilai null, gunakan 'Stranger'Menggunakan operator ini membuat kodemu tetap mudah dibaca sekaligus menjaga keamanan terhadap nilai null di seluruh programmu.
Tantangan
MudahMari kita buat sistem pendaftaran tamu yang menunjukkan cara operator null-aware dapat membuat kodemu lebih rapi saat menangani informasi opsional.
Kamu akan membagi kodemu ke dalam dua file:
guest.dart: Definisikan classGuestyang mewakili seseorang yang menghadiri acara. Sebagian tamu memberikan detail lengkap, sedangkan yang lain hanya memberikan informasi dasar. Class-mu harus memiliki:String nameyang tidak boleh null, setiap tamu harus memiliki namaString? emailyang boleh null, tidak semua orang memberikan emailString? dietaryPreferenceyang boleh null, sebagian tamu tidak menyebutkan kebutuhan makanannya- Constructor yang menggunakan
namesebagai parameter wajib - Method
getDisplayEmail()yang mengembalikan email jika tersedia, atau'No email provided'menggunakan operator?? - Method
assignDefaultDiet()yang menetapkandietaryPreferenceke'Standard'hanya jika nilainya saat ini null, menggunakan operator??= - Method
getEmailDomain()yang mengembalikan panjang email menggunakan?., ataunulljika email tidak ada - Method
printBadge()yang mencetak informasi lencana tamu
main.dart: Impor class tamumu dan daftarkan tiga tamu dengan tingkat informasi yang berbeda:- Buat tamu bernama
'Alice', tetapkan emailnya ke'alice@company.com'dan preferensi makanannya ke'Vegetarian' - Buat tamu bernama
'Bob', tetapkan hanya emailnya ke'bob@email.org'(biarkan preferensi makanannya bernilai null) - Buat tamu bernama
'Charlie'(biarkan email dan preferensi makanannya bernilai null) - Panggil
assignDefaultDiet()pada ketiga tamu - Untuk setiap tamu secara berurutan, panggil
printBadge(), lalu cetakEmail length: [result]menggunakangetEmailDomain()
- Buat tamu bernama
Method printBadge() harus mencetak dalam format ini:
=== Guest Badge ===
Name: [name]
Email: [getDisplayEmail()]
Diet: [dietaryPreference or "Not specified"]Perhatikan bahwa preferensi makanan Alice tetap 'Vegetarian' karena ??= hanya menetapkan nilai jika nilainya null, sedangkan Bob dan Charlie mendapatkan diet default 'Standard'.
Output yang diharapkan:
=== Guest Badge ===
Name: Alice
Email: alice@company.com
Diet: Vegetarian
Email length: 17
=== Guest Badge ===
Name: Bob
Email: bob@email.org
Diet: Standard
Email length: 13
=== Guest Badge ===
Name: Charlie
Email: No email provided
Diet: Standard
Email length: nullCoba sendiri
import 'guest.dart';
void main() {
// TODO: Buat tamu bernama 'Alice'
// Atur emailnya menjadi 'alice@company.com'
// Atur preferensi makanannya menjadi 'Vegetarian'
// TODO: Buat tamu bernama 'Bob'
// Atur hanya emailnya menjadi 'bob@email.org'
// Biarkan preferensi makanannya bernilai null
// TODO: Buat tamu bernama 'Charlie'
// Biarkan email dan preferensi makanannya bernilai null
// TODO: Panggil assignDefaultDiet() untuk ketiga tamu
// TODO: Untuk setiap tamu secara berurutan (Alice, Bob, Charlie):
// - Panggil printBadge()
// - Cetak 'Email length: [result]' menggunakan getEmailDomain()
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online