Di artikel ini Anda akan mempelajari tentang aturan yang digunakan untuk mengevaluasi ekspresi dengan operator dan operan.
Diutamakan Operator Swift
Prioritas operator adalah kumpulan aturan yang digunakan untuk mengevaluasi ekspresi matematika yang diberikan. Jika ada beberapa operator yang digunakan dalam satu ekspresi, setiap bagian dievaluasi dalam urutan tertentu yang disebut prioritas operator. Operator tertentu memiliki prioritas lebih tinggi daripada yang lain yang mempengaruhi bagaimana ekspresi dievaluasi.
Tabel prioritas operator
Tabel di bawah mencantumkan prioritas operator di Swift. Semakin tinggi tampilannya di tabel, semakin tinggi prioritasnya.
Grup Prioritas Perpustakaan Standar Swift (Tertinggi hingga Terendah)Grup Operator | Contoh |
---|---|
Diutamakan pergeseran bitwise | >> & <>>> |
Urutan perkalian | & *% & * / |
Prioritas tambahan | | & + & - + - ^ |
Urutan Formasi Rentang | … <… |
Casting Diutamakan | adalah sebagai |
Diutamakan Penggabungan Nihil | ?? |
Perbandingan Diutamakan | ! => = <= === == |
Urutan Konjungsi Logis | && |
Disjungsi Logis Diutamakan | || |
Prioritas Default | ~> |
Prioritas Ternary | ?: |
Fungsi Panah diutamakan | () |
Prioritas Tugas | | =% = / = & <> = & = * = >> = << = = + = - = |
Contoh 1: Diutamakan Operator Swift
let x = 4 + 5 * 5 print(x)
Ketika Anda menjalankan program di atas, hasilnya adalah:
29
Dalam contoh di atas, jika Anda membaca ekspresi dari kiri ke kanan, Anda mungkin mengharapkan output 45. Namun, operator perkalian memiliki prioritas yang lebih tinggi daripada operator penjumlahan sehingga ekspresi 4 + 5 * 5
dievaluasi sebagai 4 + (5 * 5)
. Oleh karena itu print(x)
menghasilkan 29 di layar.
Langkah | Operator | Ekspresi | Nilai yang dikembalikan dari ekspresi |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | cetak (x) | 29 |
Contoh 2: Swift Operator Precedence dengan operator penugasan yang kompleks
var y = 15 y += 10 - 2 * 3 print(y)
Ketika Anda menjalankan program di atas, hasilnya adalah:
19
Dalam contoh di atas, ekspresi var y = 15
memberikan nilai 15 dalam variabel y.
Dalam ekspresi berikutnya y += 10 - 2 * 3
, operator perkalian memiliki prioritas yang lebih tinggi daripada operator pengurangan & penugasan gabungan ( +=
).
Oleh karena itu, ekspresi y += 10 - 2 * 3
dievaluasi sebagai y = y + (10 - (2 * 3))
.
Langkah | Operator | Ekspresi | Nilai yang dikembalikan dari ekspresi |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | - | 10 - 6 | 4 |
4 | + = | 15 + 4 | 19 |
Asosiasi Operator Swift
Meskipun ada aturan standar yang ditentukan oleh prioritas operator untuk mengevaluasi ekspresi, Anda mungkin bertanya-tanya apa yang terjadi jika ada beberapa operator dengan tingkat prioritas yang sama. Asosiasi operator menentukan bagaimana operator dengan prioritas yang sama dikelompokkan bersama.
Di Swift, operator dapat berupa asosiatif kiri, asosiatif kanan, atau tidak memiliki asosiatif. Operator yang asosiatif kiri, mengelompokkan operannya dari kiri pernyataan, operator asosiatif kanan dari kanan dan operator tanpa asosiatif tidak memiliki perilaku yang ditentukan saat digunakan dalam urutan dalam ekspresi.
Tabel asosiasi operator
Tabel di bawah menunjukkan asosiasi operator Swift bersama dengan prioritasnya.
Asosiasi Perpustakaan Standar Swift (Diutamakan dari Tertinggi ke Terendah)Grup Operator | Contoh | Asosiatif |
---|---|---|
Diutamakan pergeseran bitwise | >> & <>>> | tidak ada |
Urutan perkalian | & *% & * / | kiri |
Prioritas tambahan | | & + & - + - ^ | kiri |
Urutan Formasi Rentang | … <… | tidak ada |
Casting Diutamakan | adalah sebagai | tidak ada |
Diutamakan Penggabungan Nihil | ?? | Baik |
Perbandingan Diutamakan | ! => = <= === == | tidak ada |
Urutan Konjungsi Logis | && | kiri |
Disjungsi Logis Diutamakan | || | kiri |
Prioritas Default | ~> | tidak ada |
Prioritas Ternary | ?: | Baik |
Fungsi Panah diutamakan | () | Baik |
Prioritas Tugas | | =% = / = & <> = & = * = >> = << = = | Baik |
Contoh 3: Asosiasi Operator Swift
let x = 40 / 2 * 10 print(x)
Ketika Anda menjalankan program di atas, hasilnya adalah:
200
Dalam program di atas, ekspresi dievaluasi dari kiri ke kanan karena operator termasuk dalam kelompok prioritas perkalian dan telah meninggalkan asosiatif. Oleh karena itu, operasi pembagian dilakukan lebih awal dan Anda mendapatkan hasil 200 . Bagaimana jika Anda ingin melakukan perkalian terlebih dahulu? Anda perlu membungkus 2 * 10
ekspresi menjadi kurung kurawal () sebagai:
let x = 40 / (2 * 10) print(x)
Ketika Anda menjalankan program di atas, hasilnya adalah:
2
Anda tidak perlu mengingat tabel prioritas dan asosiatif. Seringkali, presedensi dan asosiativitas operator masuk akal. Anda selalu dapat menggunakan tabel untuk referensi jika ragu. Selain itu, lebih baik menggunakan tanda kurung agar kode Anda lebih mudah dipahami.