Priorita a asociatívnosť operátora Swift (s príkladmi)

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 vykonania
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 = 15priraďuje hodnotu 15 v premennej y.

V ďalšom výraze y += 10 - 2 * 3má operátor násobenia vyššiu prednosť ako operátor odčítania a zloženého priradenia ( +=).

Preto je výraz y += 10 - 2 * 3vyhodnotený ako y = y + (10 - (2 * 3)).

Kroky vykonania
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 * 10vý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ý.

Zaujímavé články...