MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Pattern-uri relaționale și logice

Pattern-ul relațional permite compararea valorii transmise în construcție cu anumite valori utilizând operații de comparație. De exemplu, în funcție de suma depozitului, dobânzile la acest depozit pot varia. Calculăm suma dobânzilor în funcție de suma depozitului utilizând pattern-ul relațional:

decimal Calculate(decimal sum)
{
   return sum switch {
       <= 0 => 0,              // dacă suma este mai mică sau egală cu 0, returnăm 0
       < 50000 => sum * 0.05m, // dacă suma este mai mică de 50000, returnăm sum * 0.05m
       < 100000 => sum * 0.1m, // dacă suma este mai mică de 100000, returnăm sum * 0.1m
       _ => sum * 0.2m         // în celelalte cazuri, returnăm sum * 0.2m
   };
}

Aplicare:

Console.WriteLine(Calculate(-200));     // 0
Console.WriteLine(Calculate(0));        // 0
Console.WriteLine(Calculate(10000));    // 500
Console.WriteLine(Calculate(60000));    // 6000
Console.WriteLine(Calculate(200000));   // 40000

Pattern-ul logic permite utilizarea operatorilor logici and (înmulțire logică sau operația logică ȘI) și or (adunare logică sau operația logică SAU) pentru combinarea operațiilor de comparație. De exemplu, transmitem metoda vârsta și returnăm mesajul corespunzător:

string CheckAge(int age)
{
   return age switch
   {
       <1 or >110 => "Vârstă nevalidă",   // dacă vârsta este mai mare de 110 și mai mică de 1
       >=1 and <18 => "Acces interzis",   // dacă vârsta este egală sau mai mare de 1 și mai mică de 18
       _ => "Acces permis"                // în celelalte cazuri
   };
}

Aplicare:

Console.WriteLine(CheckAge(200));    // Vârstă nevalidă
Console.WriteLine(CheckAge(0));      // Vârstă nevalidă
Console.WriteLine(CheckAge(17));     // Acces interzis
Console.WriteLine(CheckAge(18));     // Acces permis

Încă un operator logic - not este folosit pentru negare și returnează true dacă argumentul său este egal cu false:

string CheckAge(int age) => age switch
{
   not 33 => "Vârstă obișnuită",    // dacă vârsta NU este egală cu 33
   _ => "Aveți 33 de ani"           // în celelalte cazuri, adică dacă vârsta este 33
};
← Lecția anterioară Lecția următoare →