Operator bersyarat yang dibahas di sini bukanlah perintah bersyarat seperti if-else. Yang dimaksud adalah operator ternary dan operator penggabungan null.
Dua Jenis Operator Bersyarat
Dart menyediakan dua operator bersyarat ringkas untuk mengganti blok kode if-else yang panjang. Kamu bisa melakukan pengecekan syarat, penugasan atau pengembalian nilai hanya dalam satu baris.
- Operator ternary bersyarat:
condition ? expr1 : expr2 - Operator penggabungan null:
expr1 ?? expr2
Operator ternary condition ? expr1 : expr2
Sintaks
Kondisi boolean ? Ekspresi jika benar : Ekspresi jika salah
Jika hasil dari condition bernilai true, akan mengembalikan expr1; jika bernilai false, akan mengembalikan expr2.
Variabel condition menghasilkan nilai boolean, berdasarkan nilai boolean ini kita pilih salah satu nilai untuk ditugaskan atau dikembalikan.
Contoh:
void main() {
bool isRain = true;
// Penugasan pakai ekspresi ternary
var result = isRain ? 'Sedang hujan' : 'Tidak hujan';
print(result); // Sedang hujan
isRain = false;
result = isRain ? 'Sedang hujan' : 'Tidak hujan';
print(result); // Tidak hujan
}Code language: Dart (dart)
Hasil eksekusi
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Sedang hujan
Tidak hujanCode language: CSS (css)
Jika kamu sudah belajar if-else, kamu bisa tulis kodenya seperti ini:
void main() {
bool isRain = true;
String result;
if (isRain) {
result = 'Sedang hujan';
} else {
result = 'Tidak hujan';
}
print(result);//Sedang hujan
}Code language: Dart (dart)
Operator Penggabungan Null
Fungsinya untuk mengecek apakah variabel bernilai null, sekaligus cepat menetapkan nilai default.
Sintaks expr1 ?? expr2
Ekspresi yang bisa null ?? Nilai defaultCode language: JavaScript (javascript)
- Jika
expr1bukan null, langsung mengembalikanexpr1; - Jika
expr1bernilainull, mengembalikanexpr2
Contoh resmi
void main() {
// Parameter berupa string yang bisa null String?
String playerName(String? name) => name ?? 'Guest';
print(playerName("Tom")); // Tom
print(playerName(null)); // Guest
}Code language: JavaScript (javascript)
Kita definisikan fungsi playerName untuk nama pemain, parameternya string yang boleh null. Operator ?? dipakai untuk memberikan nilai awal: jika nama yang dikirim bernilai null, secara otomatis pakai Guest sebagai default.
Tambahan Penjelasan
Bagian playerName adalah fungsi panah, bentuk singkat penulisan fungsi. Nanti kita pelajari lebih lanjut, kode ini sama persis dengan tulisan di bawah:
String playerName(String? name) {
return name ?? 'Guest';
}Code language: Dart (dart)
Perbandingan Tulisan yang Sama Logikanya
Versi pakai operator ternary
String playerName(String? name) => name != null ? name : 'Guest';Code language: JavaScript (javascript)
Blok if-else lengkap
String playerName(String? name) {
if (name != null) {
return name;
} else {
return 'Guest';
}
}Code language: JavaScript (javascript)