Satu pola jarang cukup untuk aturan bisnis nyata; kita sering butuh rentang tertentu, daftar nilai, atau negasi sebuah syarat. Logical pattern menyediakan tiga operator untuk itu: and, or, dan not, yang bekerja di atas pola mana pun. Bab ini membahas prioritas ketiganya, penggunaan tanda kurung, dan contoh poin loyalitas yang memakai semuanya.

Tiga Operator dan Prioritasnya #

Operator not mengikat paling kuat, diikuti and, lalu or, menyerupai !, &&, dan || pada logika biasa. Operator and menuntut kedua pola cocok, or cukup satu, dan not membalik hasil pola di belakangnya. Ketika prioritas membingungkan, tanda kurung menetapkan kelompok secara eksplisit dan membuat niat terbaca.

Contoh: Poin Loyalitas #

csharp
int poin = 850;

string level = poin switch
{
    < 500 => "Dasar",
    >= 500 and < 1000 => "Silver",
    _ => "Emas"
};

Console.WriteLine($"Level: {level}");

Console.WriteLine($"Rentang Silver: {poin is >= 500 and < 1000}");
Console.WriteLine($"Bukan Emas: {poin is not >= 1000}");
Console.WriteLine($"Target wilayah barat: {poin is 800 or 850 or 900}");
Console.WriteLine($"Kombinasi kurung: {poin is (>= 500 and <= 900) and not 700}");

Output yang Dihasilkan:

text
Level: Silver
Rentang Silver: True
Bukan Emas: True
Target wilayah barat: True
Kombinasi kurung: True

Mari kita bedah baris demi baris:

  1. < 500 dan >= 500 and < 1000: Dua arm pertama membagi skala poin; arm kedua memakai and agar rentangnya terbatas, dan sisanya jatuh ke discard sebagai Emas.
  2. poin is >= 500 and < 1000: Bentuk is yang sama menghasilkan bool untuk kondisi tunggal, cocok sebagai syarat variabel atau argumen.
  3. poin is not >= 1000: Negasi ditempelkan pada pola relational, sehingga membaca “poin tidak mencapai seribu”.
  4. poin is 800 or 850 or 900: Operator or merangkai constant pattern menjadi daftar nilai target tanpa menulis tiga syarat terpisah.
  5. (>= 500 and <= 900) and not 700: Tanda kurung menetapkan rentang sebagai satu kelompok, lalu not 700 mengecualikan satu nilai di dalamnya.

Ketika Pola Logis Menumpuk #

Rantai and dan or yang panjang lebih mudah dibaca bila setiap kelompok diberi kurung dan nama konstanta yang bermakna. Bila syarat memerlukan data dari beberapa property sekaligus, property pattern pada bab berikutnya menjadi wadah yang lebih rapi daripada menumpuk operator logis.