Operator & Percabangan

Operator aritmatika, perbandingan, logika, operator null-aware (??, ?.), if/else, switch statement dan switch expression Dart 3.

Part 3 dari 20 ± 50 menit Gratis

Operator

KelompokOperatorContoh
Aritmatika+ - * / ~/ %7 ~/ 2 → 3
Penugasan= += -= *= /= ??=x += 5
Naik/turun++ --i++
Perbandingan== != > < >= <=umur >= 17
Logika&& || !a && !b
Tipeis is! asx 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?

SituasiPilih
Dua jalur sederhanaif/else atau ternary
Rentang nilai bertingkatif / else if, atau switch expression dengan >=
Satu nilai dengan banyak kemungkinanswitch 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 _.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X