Operator & Percabangan
Operator aritmatika, perbandingan, logika, operator null-aware (??, ?.), if/else, switch statement dan switch expression Dart 3.
Operator
| Kelompok | Operator | Contoh |
|---|---|---|
| Aritmatika | + - * / ~/ % | 7 ~/ 2 → 3 |
| Penugasan | = += -= *= /= ??= | x += 5 |
| Naik/turun | ++ -- | i++ |
| Perbandingan | == != > < >= <= | umur >= 17 |
| Logika | && || ! | a && !b |
| Tipe | is is! as | x is int |
Di Dart == membandingkan isi, termasuk untuk String: 'a' == 'a' adalah true. Tidak ada jebakan seperti di Java.
if / else
int nilai = 78;
if (nilai >= 85) {
print('A');
} else if (nilai >= 70) {
print('B');
} else {
print('C');
}
Kondisi harus bertipe bool. Dart tidak menerima if (1) atau if (nama) seperti JavaScript.
Operator ternary dan operator null-aware
String status = umur >= 17 ? 'Dewasa' : 'Anak'; // kondisi ? jikaBenar : jikaSalah
String? nama; // boleh null (bab 8)
print(nama ?? 'Tamu'); // ?? : pakai 'Tamu' jika nama null
nama ??= 'Budi'; // ??= : isi hanya jika masih null
print(nama?.length); // ?. : akses aman, hasil null jika nama null
switch statement
String hari = 'senin';
switch (hari) {
case 'sabtu':
case 'minggu':
print('Libur');
case 'senin':
print('Awal pekan');
default:
print('Hari kerja');
}
Sejak Dart 3, setiap case otomatis berhenti di akhir blok; tidak perlu break dan tidak ada fall-through yang tidak sengaja. Beberapa case yang ditumpuk tanpa isi (sabtu dan minggu) berbagi blok yang sama.
switch expression (Dart 3)
Switch bisa menghasilkan nilai, lebih ringkas dari if bertingkat:
String kategori = switch (nilai) {
>= 85 => 'A',
>= 70 => 'B',
>= 55 => 'C',
_ => 'D', // _ = semua kemungkinan lain
};
var jumlahHari = switch (bulan) {
1 || 3 || 5 || 7 || 8 || 10 || 12 => 31,
4 || 6 || 9 || 11 => 30,
_ => 28,
};
Setiap cabang ditulis pola => hasil, dipisah koma, dan berakhir dengan ;. Pola >= 85 adalah relational pattern khas Dart 3.
Guard dengan when
var pesan = switch (suhu) {
int s when s < 0 => 'Beku',
int s when s < 25 => 'Sejuk',
_ => 'Panas',
};
Mana yang dipilih?
| Situasi | Pilih |
|---|---|
| Dua jalur sederhana | if/else atau ternary |
| Rentang nilai bertingkat | if / else if, atau switch expression dengan >= |
| Satu nilai dengan banyak kemungkinan | switch expression |
Error umum
Conditions must have a static type of 'bool'.→ kondisi if bukan bool.The type 'int?' can't be used as ...→ operator pada nilai yang mungkin null; tangani dengan??atau?..- Switch expression tanpa
_→The type 'int' is not exhaustively matched; tambahkan cabang_.