Cvičení – implementace podmíněného operátoru
- 7 min
Předpokládejme, že potřebujete rychle zjistit, jestli má nákup zákazníka nárok na propagační slevu. Podrobnosti o propagační akci ukazují, že pokud je hodnota nákupu větší než 1000 eur, je nákup způsobilý pro slevu 100 eur. Pokud je částka nákupu 1 000 eur nebo nižší, je nákup způsobilý pro slevu 50 eur.
I když byste mohli k vyjádření tohoto obchodního if ... elseif ... else pravidla použít konstruktor větvení, může být lepší volbou použití podmíněného operátora k vyhodnocení způsobilosti pro propagační slevu. Ten má kompaktní formát, který nám ušetří několik řádků kódu a možná jasněji sděluje jeho záměr.
Co je podmíněný operátor?
Podmíněný operátor?: vyhodnotí logický výraz a vrátí jeden ze dvou výsledků v závislosti na tom, jestli se logický výraz vyhodnotí jako pravdivý nebo nepravdivý. Podmíněný operátor se běžně označuje jako ternární podmíněný operátor.
Tady je jeho základní podoba:
<evaluate this condition> ? <if condition is true, return this value> : <if condition is false, return this value>
Zvažte, jak byste podmíněný operátor použili na scénář propagační slevy. Vaším cílem je zobrazit zákazníkovi zprávu, která zobrazuje procento slevy. Částka jejich slevy bude založena na tom, zda u svého nákupu utratila více než 1 000 eur.
Přidání kódu, který používá podmíněný operátor
Ujistěte se, že máte v editoru Visual Studio Code otevřený prázdný soubor Program.cs. V případě potřeby otevřete Visual Studio Code a pak následujícím postupem připravte soubor Program.cs v Editoru:
- V nabídce Soubor vyberte Otevřít složku.
- Pomocí dialogového okna Otevřít složku přejděte na složku CsharpProjects a otevřete ji.
- Na panelu Průzkumník editoru Visual Studio Code vyberte Program.cs.
- V nabídce Výběru editoru Visual Studio Code vyberte Vybrat vše a stiskněte klávesu Delete.
Do editoru visual studio Code zadejte následující kód.
int saleAmount = 1001; int discount = saleAmount > 1000 ? 100 : 50; Console.WriteLine($"Discount: {discount}");V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Soubor Program.cs musí být uložen před sestavením nebo spuštěním kódu.
Na panelu PRŮZKUMNÍK otevřete terminál v umístění složky TestProject, klikněte pravým tlačítkem myši na TestProject a pak vyberte Otevřít v integrovaném terminálu.
Panel terminálu, který zobrazuje příkazový řádek, by teď měl být otevřený. Příkazový řádek by měl zobrazit cestu ke složce pro umístění složky TestProject.
Na příkazovém řádku terminálu spusťte kód zadáním příkazu dotnet run a stiskněte Enter.
Když tento kód spustíte, měl by se zobrazit následující výstup:
Discount: 100
Použití podmíněného operátoru vloženého
Tento kód můžete ještě více zkomprimovat odstraněním dočasné proměnné discount.
Následujícím způsobem aktualizujte kód v editoru visual Studio Code:
int saleAmount = 1001; // int discount = saleAmount > 1000 ? 100 : 50; Console.WriteLine($"Discount: {(saleAmount > 1000 ? 100 : 50)}");V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
Na příkazovém řádku terminálu spusťte kód zadáním příkazu dotnet run a stiskněte Enter.
Všimněte si, že výstup je stejný.
Prozkoumání aktualizovaného
Console.WriteLine()příkazu chvíli trvá.Všimněte si, že je nutné zabalit celý příkaz podmíněného operátoru do závorek. Závorky zajišťují, že modul runtime rozumí vašemu záměru, což je místo výsledku vyhodnocení podmínky (saleAmount > 1000).
Poznámka:
I když je tento konkrétní příklad kompaktní a ukazuje, co je možné, je o něco obtížnější číst. Není vždy vhodné kombinovat řádky kódu, zejména pokud nepříznivě ovlivňuje celkovou čitelnost kódu. Rozhodnutí v podobných případech je často subjektivní.
Rekapitulace
Měli byste si zapamatovat následující fakta o podmíněném operátoru:
- Podmíněný operátor můžete použít ke zmenšení velikosti kódu, ale měli byste zajistit, aby výsledný kód byl snadno čitelný.
- Podmíněný operátor můžete použít, když potřebujete vrátit hodnotu založenou na binární podmínce. Kód vrátí první možnost, když se podmínka vyhodnotí jako true, a vrátí druhou možnost, když se podmínka vyhodnotí jako nepravda.