Swift Operatörü önceliği ve ilişkilendirilebilirlik (Örneklerle)

Bu makalede, bir ifadeyi işleçler ve işlenenlerle değerlendirmek için kullanılan kuralları öğreneceksiniz.

Swift Operatör önceliği

Operatör önceliği, belirli bir matematiksel ifadeyi değerlendirmek için kullanılan bir kurallar koleksiyonudur. Tek bir ifadede kullanılan birkaç operatör olduğunda, her bölüm operatör önceliği adı verilen belirli bir sırada değerlendirilir. Bazı operatörler, bir ifadenin nasıl değerlendirileceğini etkileyen diğerlerinden daha yüksek önceliğe sahiptir.

Operatör öncelik tablosu

Aşağıdaki tablo, operatörlerin Swift'deki önceliğini listeler. Tabloda ne kadar yüksek görünürse, önceliği o kadar yüksektir.

Swift Standard Kitaplık Öncelik Grupları (En Yüksekten Düşüğe)
Operatör Grupları Örnekler
Bitsel kaydırma önceliği >> & <>>>
Çarpma önceliği & *% & * /
Ekleme önceliği | & + & - + - ^
Aralık Oluşumu Önceliği … <…
Döküm Önceliği olduğu gibi
Nil-Coalescing Önceliği ??
Karşılaştırma Önceliği ! => = <= === ==
Mantıksal Bağlantı Önceliği &&
Mantıksal Ayrılma Önceliği ||
Varsayılan Öncelik ~>
Üçlü Öncelik ?:
İşlev Ok önceliği ()
Atama Önceliği | =% = / = & <> = & = * = >> = << = = + = - =

Örnek 1: Swift Operatörü Önceliği

 let x = 4 + 5 * 5 print(x) 

Yukarıdaki programı çalıştırdığınızda, çıktı:

 29

Yukarıdaki örnekte, ifadeyi soldan sağa okursanız, çıktının 45 olmasını bekleyebilirsiniz. Ancak, çarpma operatörü toplama operatöründen daha yüksek önceliğe sahiptir, bu nedenle ifade 4 + 5 * 5 olarak değerlendirilir 4 + (5 * 5). Bu nedenle print(x)ekranda 29 çıktı verir.

Yürütme Adımları
Adımlar Şebeke İfade İfadeden döndürülen değer
1 * 5 * 5 25
2 + 4 + 25 29
3 = baskı (x) 29

Örnek 2: Karmaşık atama operatörüyle Swift Operatörü Önceliği

 var y = 15 y += 10 - 2 * 3 print(y) 

Yukarıdaki programı çalıştırdığınızda, çıktı:

 19

Yukarıdaki örnekte ifade var y = 15, y değişkeninde 15 değerini atar.

Sonraki ifadede y += 10 - 2 * 3çarpma operatörü, çıkarma ve bileşik atama operatöründen ( +=) daha yüksek önceliğe sahiptir .

Bu nedenle ifade y += 10 - 2 * 3olarak değerlendirilir y = y + (10 - (2 * 3)).

Yürütme Adımları
Adımlar Şebeke İfade İfadeden döndürülen değer
1 = var y = 15 15
2 * 2 * 3 6
3 - 10 - 6 4
4 + = 15 + 4 19

Swift Operatör İlişkilendirmesi

Bir ifadeyi değerlendirmek için operatör önceliği tarafından tanımlanmış önceden tanımlanmış kurallar olsa da, aynı öncelik düzeyine sahip birden çok operatör varsa ne olacağını merak ediyor olabilirsiniz. Operatör ilişkilendirilebilirliği, aynı önceliğe sahip operatörlerin birlikte nasıl gruplandığını tanımlar.

Swift'de operatörler ya solla ilişkilendirilebilir, sağla ilişkilendirilebilir ya da ilişkilendirilebilirliği olmayabilir. Sola ilişkilendirilebilir, işlenenlerini ifadenin solundan gruplandıran, sağdan sağa ilişkilendirmeli operatörler ve ilişkilendirilebilirliği olmayan operatörler, bir ifadede sırayla kullanıldığında tanımlanmış davranışlara sahip değildir.

Operatör ilişkilendirme tablosu

Aşağıdaki tablo, öncelik ile birlikte Swift operatörlerinin ilişkilendirilebilirliğini göstermektedir.

Swift Standard Kitaplık İlişkilendirilebilirliği (Öncelik En Yüksekten Düşüğe)
Operatör Grupları Örnekler İlişkisellik
Bitsel kaydırma önceliği >> & <>>> Yok
Çarpma önceliği & *% & * / ayrıldı
Ekleme önceliği | & + & - + - ^ ayrıldı
Aralık Oluşumu Önceliği … <… Yok
Döküm Önceliği olduğu gibi Yok
Nil-Coalescing Önceliği ?? sağ
Karşılaştırma Önceliği ! => = <= === == Yok
Mantıksal Bağlantı Önceliği && ayrıldı
Mantıksal Ayrılma Önceliği || ayrıldı
Varsayılan Öncelik ~> Yok
Üçlü Öncelik ?: sağ
İşlev Ok önceliği () sağ
Atama Önceliği | =% = / = & <> = & = * = >> = << = = sağ

Örnek 3: Swift Operatör İlişkilendirmesi

 let x = 40 / 2 * 10 print(x) 

Yukarıdaki programı çalıştırdığınızda, çıktı:

 200

Yukarıdaki programda, ifade soldan sağa doğru değerlendirilir çünkü operatörler çarpma önceliği gruplarına girer ve sol ilişkiselliğe sahiptir. Bu nedenle bölme işlemi daha erken gerçekleşir ve sonucu 200 alırsınız . Ya önce çarpmayı yürütmek istersen? Sen sarmak gerekiyor 2 * 10olarak parantez) (içine ifadesini:

 let x = 40 / (2 * 10) print(x) 

Yukarıdaki programı çalıştırdığınızda, çıktı:

 2

Öncelik ve ilişkisel tabloyu ezberlemenize gerek yok. Çoğu zaman operatörlerin önceliği ve birlikteliği kendi içinde anlamlıdır. Şüpheye düştüğünüzde tabloyu her zaman referans olarak kullanabilirsiniz. Ayrıca, kodunuzun anlaşılmasını kolaylaştırmak için parantez kullanmak daha iyidir.

Ilginç makaleler...