Prioritas dan asosiatif Operator Swift (Dengan Contoh)

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 Eksekusi
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 = 15memberikan 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 * 3dievaluasi sebagai y = y + (10 - (2 * 3)).

Langkah Eksekusi
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 * 10ekspresi 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.

Artikel yang menarik...