V tomto článku sa dozviete o pravidlách používaných na vyhodnotenie výrazu pomocou operátorov a operandov.
Priorita operátora Swift
Prednosť operátora je súbor pravidiel používaných na vyhodnotenie daného matematického výrazu. Ak sa v jednom výraze používa niekoľko operátorov, každá časť sa vyhodnotí v určitom poradí, ktoré sa nazýva priorita operátora. Určité operátory majú vyššiu prioritu ako ostatné, čo ovplyvňuje spôsob vyhodnotenia výrazu.
Tabuľka priorít operátora
V nasledujúcej tabuľke je uvedená prednosť operátorov v aplikácii Swift. Čím vyššie je uvedená v tabuľke, tým vyššia je jej prednosť.
Štandardné skupiny predvoľby knižnice Swift (od najvyššej po najnižšiu)Skupiny operátorov | Príklady |
---|---|
Priorita bitového posunu | >> & <>>> |
Prednosť pred násobením | & *% & * / |
Prednosť sčítania | | & + & - + - ^ |
Prednosť formovania rozsahu | … <… |
Odliatok prednosť | je ako |
Nula splynutie prednosť | ?? |
Porovnanie | ! => = <= === == |
Logická prednosť spojenia | && |
Logická disjunkcia prednosť | || |
Predvolená priorita | ~> |
Ternárna prednosť | ?: |
Funkcia Priorita šípky | () |
Priorita pridelenia | | =% = / = & <> = & = * = >> = << = = + = - = |
Príklad 1: Prednosť operátora Swift
let x = 4 + 5 * 5 print(x)
Keď spustíte vyššie uvedený program, výstup bude:
29
Vo vyššie uvedenom príklade, ak čítate výraz zľava doprava, môžete očakávať, že výstup bude 45. Ale operátor násobenia má vyššiu prioritu ako operátor sčítania, takže výraz 4 + 5 * 5
je vyhodnotený ako 4 + (5 * 5)
. Preto print(x)
výstup 29 na obrazovke.
Kroky | Prevádzkovateľ | Vyjadrenie | Hodnota vrátená z výrazu |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | tlačiť (x) | 29 |
Príklad 2: Priorita operátora Swift s operátorom zložitého priradenia
var y = 15 y += 10 - 2 * 3 print(y)
Keď spustíte vyššie uvedený program, výstup bude:
19
Vo vyššie uvedenom príklade výraz var y = 15
priraďuje hodnotu 15 v premennej y.
V ďalšom výraze y += 10 - 2 * 3
má operátor násobenia vyššiu prednosť ako operátor odčítania a zloženého priradenia ( +=
).
Preto je výraz y += 10 - 2 * 3
vyhodnotený ako y = y + (10 - (2 * 3))
.
Kroky | Prevádzkovateľ | Vyjadrenie | Hodnota vrátená z výrazu |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | - | 10 - 6 | 4 |
4 | + = | 15 + 4 | 19 |
Asociatívnosť operátora Swift
Aj keď existujú preddefinované pravidlá definované operátorom priority na vyhodnotenie výrazu, možno by vás zaujímalo, čo sa stane, ak existuje viac operátorov rovnakej úrovne priority. Asociativita operátorov definuje, ako sú zoskupené operátory rovnakej priority.
V systéme Swift môžu byť operátory buď asociatívne vľavo, vpravo alebo v asociatíve. Operátory, ktoré sú ľavo-asociatívne, zoskupujú svoje operandy zľava od príkazu, pravo-asociatívne operátory z pravej strany a operátory bez asociativity nemajú definované správanie, ak sú použité vo výraze v poradí.
Asociačná tabuľka operátora
Nasledujúca tabuľka zobrazuje asociativitu operátorov Swift spolu s prednosťou.
Štandardná asociatívnosť knižnice Swift (priorita od najvyššej po najnižšiu)Skupiny operátorov | Príklady | Asociatívnosť |
---|---|---|
Priorita bitového posunu | >> & <>>> | žiadny |
Prednosť pred násobením | & *% & * / | vľavo |
Prednosť sčítania | | & + & - + - ^ | vľavo |
Prednosť formovania rozsahu | … <… | žiadny |
Odliatok prednosť | je ako | žiadny |
Nula splynutie prednosť | ?? | správny |
Porovnanie | ! => = <= === == | žiadny |
Logická prednosť spojenia | && | vľavo |
Logická disjunkcia prednosť | || | vľavo |
Predvolená priorita | ~> | žiadny |
Ternárna prednosť | ?: | správny |
Funkcia Priorita šípky | () | správny |
Priorita pridelenia | | =% = / = & <> = & = * = >> = << = = | správny |
Príklad 3: Asociatívnosť operátora Swift
let x = 40 / 2 * 10 print(x)
Keď spustíte vyššie uvedený program, výstup bude:
200
Vo vyššie uvedenom programe sa výraz hodnotí zľava doprava, pretože operátory spadajú do skupín priorít násobenia a majú ľavú asociativitu. Preto operácia rozdelenia prebehne skôr a získate výsledok 200 . Čo ak chcete najskôr vykonať násobenie? Musíte zabaliť 2 * 10
výraz do zátvoriek () ako:
let x = 40 / (2 * 10) print(x)
Keď spustíte vyššie uvedený program, výstup bude:
2
Nemusíte si pamätať prednosť a asociačnú tabuľku. Väčšinou má prednosť a asociatívnosť operátorov zmysel sama o sebe. V prípade pochybností môžete kedykoľvek použiť tabuľku ako referenciu. Je tiež lepšie použiť zátvorky, aby bol váš kód ľahšie pochopiteľný.