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.
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 * 3
olarak değerlendirilir y = y + (10 - (2 * 3))
.
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 * 10
olarak 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.