Selles artiklis saate teada reeglite kohta, mida kasutatakse avaldise hindamiseks koos operaatorite ja operandidega.
Kiire operaatori ülimuslikkus
Operaatori prioriteet on reeglite kogum, mida kasutatakse antud matemaatilise avaldise hindamiseks. Kui ühes avaldises kasutatakse mitu operaatorit, hinnatakse iga osa kindlas järjekorras, mida nimetatakse operaatori prioriteediks. Teatud operaatoritel on teistest kõrgem prioriteet, mis mõjutab avaldise hindamist.
Operaatori tähtsuse tabel
Allolevas tabelis on loetletud Swifti operaatorite paremusjärjestus. Mida kõrgem see tabelis on, seda suurem on selle tähtsus.
Kiired raamatukogu eelistusgrupid (kõrgeimast madalaimani)Operaatorigrupid | Näited |
---|---|
Pisuti nihutamise ülimuslikkus | >> & <>>> |
Korrutamise ülimuslikkus | & *% & * / |
Lisamise ülimuslikkus | | & + & - + - ^ |
Vahemiku moodustamise ülimuslikkus | … <… |
Casting Preedence | on nagu |
Nullkoaluleerumise ülimuslikkus | ?? |
Võrdlusjärjestus | ! => = <= === == |
Loogilise konjunktsiooni ülimuslikkus | && |
Loogilise disjunktsiooni ülimuslikkus | || |
Vaikimisi ülimuslikkus | ~> |
Kolmikjärjekord | ?: |
Funktsioon Noole paremusjärjestus | () |
Ülesande ülimuslikkus | | =% = / = & <> = & = * = >> = << = = + = - = |
Näide 1: kiire operaatori ülimuslikkus
let x = 4 + 5 * 5 print(x)
Ülaltoodud programmi käivitamisel on väljund:
29
Ülaltoodud näites võib avaldist vasakult paremale lugedes eeldada, et väljundiks on 45. Korrutamisoperaatoril on aga suurem prioriteet kui liitmisoperaatoril, nii et väljendit 4 + 5 * 5
hinnatakse järgmiselt 4 + (5 * 5)
. Seetõttu print(x)
väljastab ekraanil 29.
Sammud | Operaator | Väljendus | Väljendilt tagastatud väärtus |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | print (x) | 29 |
Näide 2: kiire operaatori ülimuslikkus keeruka määramise operaatoriga
var y = 15 y += 10 - 2 * 3 print(y)
Ülaltoodud programmi käivitamisel on väljund:
19
Ülaltoodud näites var y = 15
omistab avaldis muutujas y väärtuse 15.
Järgmises avaldises y += 10 - 2 * 3
on korrutamise operaatoril kõrgem tähtsus kui lahutamise ja ühendi määramise operaatoril ( +=
).
Seega väljend y += 10 - 2 * 3
hinnatakse y = y + (10 - (2 * 3))
.
Sammud | Operaator | Väljendus | Väljendilt tagastatud väärtus |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | - | 10 - 6 | 4 |
4 | + = | 15 + 4 | 19 |
Kiire operaatorite assotsiatiivsus
Ehkki avaldise hindamiseks on operaatori eelisjärjekorras määratletud eelmääratud reeglid, võiksite mõelda, mis juhtub, kui sama prioriteeditasemega on mitu operaatorit. Operaatorite assotsiatiivsus määratleb, kuidas sama prioriteediga operaatorid rühmitatakse.
Swiftis võivad operaatorid olla kas vasakpoolsed, parempoolsed või neil puudub assotsiatiivsus. Operaatoritel, kes on vasakpoolsed, assotsieeruvad, rühmitavad oma operandid lause vasakult, parempoolse assotsiatsiooni operaatorid paremalt ja operaatorid, kellel pole assotsiatiivsust, ei ole määratletud käitumist, kui neid kasutatakse avaldises järjestikku.
Operaatori assotsiatiivsustabel
Allolevas tabelis on näidatud Swifti operaatorite assotsiatiivsus koos ülimuslikkusega.
Kiire standardse raamatukogu assotsiatiivsus (ülimuslikkus kõige madalamast)Operaatorigrupid | Näited | Assotsiatiivsus |
---|---|---|
Pisuti nihutamise ülimuslikkus | >> & <>>> | mitte ühtegi |
Korrutamise ülimuslikkus | & *% & * / | vasakule |
Lisamise ülimuslikkus | | & + & - + - ^ | vasakule |
Vahemiku moodustamise ülimuslikkus | … <… | mitte ühtegi |
Casting Preedence | on nagu | mitte ühtegi |
Nullkoaluleerumise ülimuslikkus | ?? | eks |
Võrdlusjärjestus | ! => = <= === == | mitte ühtegi |
Loogilise konjunktsiooni ülimuslikkus | && | vasakule |
Loogilise disjunktsiooni ülimuslikkus | || | vasakule |
Vaikimisi ülimuslikkus | ~> | mitte ühtegi |
Kolmikjärjekord | ?: | eks |
Funktsioon Noole paremusjärjestus | () | eks |
Ülesande ülimuslikkus | | =% = / = & <> = & = * = >> = << = = | eks |
Näide 3: kiire operaatori assotsiatiivsus
let x = 40 / 2 * 10 print(x)
Ülaltoodud programmi käivitamisel on väljund:
200
Ülaltoodud programmis hinnatakse väljendit vasakult paremale, kuna operaatorid jagunevad korrutamise prioriteetsuse rühmadesse ja neil on assotsiatiivsus. Seetõttu toimub jagamistoiming varem ja saate tulemuse 200 . Mis siis, kui soovite kõigepealt korrutada? Te peate 2 * 10
avaldise pakkima () sulgudesse järgmiselt:
let x = 40 / (2 * 10) print(x)
Ülaltoodud programmi käivitamisel on väljund:
2
Teil pole vaja meelde jätta prioriteetsust ja assotsiatiivset tabelit. Enamasti on operaatorite ülimuslikkus ja assotsiatiivsus iseenesest mõistlik. Kahtluse korral võite tabelit alati viitena kasutada. Samuti on koodi parem mõistmine parem kasutada sulgudes.