0Pricing
Swift Academy · Ders

Operatör aşırı yükleme ve öncelik grupları

Türleriniz için yerleşik operatörleri aşırı yükleyin ve ifadelerin amaçlandığı gibi ayrıştırılması için precedence groups tanımlayın. Tasarımları yalın ve öngörülebilir tutun.

Operatör aşırı yükleme ve öncelik grupları, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 3 dersten oluşur.

Operatörler neden özelleştirilir?

Swift, türleriniz için operatörleri aşırı yüklemenize ve yeni operatörler oluşturmanıza izin verir. Bunları ölçülü kullanınız: açıklığı tercih ediniz, davranışı belgeleyiniz ve sürprizleri önlemek için öncelik tanımlayınız.

Yerleşik bir operatörü aşırı yükleme

Mevcut bir operatörü, aynı sembole ve türünüze sahip serbest bir işlev yazarak aşırı yükleyiniz. Anlamları öngörülebilir tutunuz (örneğin + değerleri toplar).

struct Vector2D: CustomStringConvertible, Equatable {
    var x: Double
    var y: Double
    var description: String { "(\(x), \(y))" }
}
func + (lhs: Vector2D, rhs: Vector2D) -> Vector2D {
    Vector2D(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
}
func == (lhs: Vector2D, rhs: Vector2D) -> Bool {
    lhs.x == rhs.x && lhs.y == rhs.y
}
let a = Vector2D(x: 1, y: 2)
let b = Vector2D(x: 3, y: 4)
let c = a + b
print(c)     // (4.0, 6.0)

Özel işleç + önceliği

Bir precedencegroup tanımlayın ve bunu işlecinize bağlayın. Sağa birleşme, 2 ** 3 ** 2 ifadesinin 2 ** (3 ** 2) olarak ayrıştırılmasını sağlar.

// Define power operator ** with right-associative precedence
precedencegroup PowerPrecedence {
    higherThan: MultiplicationPrecedence
    associativity: right
}
infix operator ** : PowerPrecedence

// Simple integer exponent (education-only; no overflow checks)
func ** (base: Int, exp: Int) -> Int {
    guard exp >= 0 else { return 0 }   // keep it simple for demo
    if exp == 0 { return 1 }
    var result = 1
    for _ in 0..<exp { result *= base }
    return result
}
print(2 ** 3)          // 8
print(2 ** 3 ** 2)     // 2 ** (3 ** 2) = 2 ** 9 = 512 (right-assoc)

Ön ek/son ek işleçleri

prefix/postfix işleçleri tanımlayabilirsiniz. Bunları açıkça matematiksel olan alanlarla sınırlı tutun; şaşırtıcı anlamlardan kaçının.

prefix operator √
prefix func √ (x: Double) -> Double { x.squareRoot() }

postfix operator !
postfix func ! (x: Bool) -> Bool { !x }  // purely demo; avoid confusing overrides

print(√9)     // 3.0
print(true!)  // false (demo only — don't ship this)

Uygulamada öncelik

Yerleşik işleçlere göre önceliğinizi (ör. MultiplicationPrecedence) dikkatle belirleyin. Okunabilirliği ve amacı doğrulamak için ifadeleri sınayın.

// Demonstrate how precedence affects parsing
// Our PowerPrecedence is higher than Multiplication.
// So this parses as: 2 * (3 ** 2) = 18
let r1 = 2 * 3 ** 2
print(r1)

// Compare if we had lower precedence (hypothetical):
// Then it would parse as (2 * 3) ** 2 = 36

En iyi yöntemler

Yönergeler:

  • Standart olmayan işlemler için yöntemleri tercih edin; işleçleri tanıdık matematiksel/bit düzeyi işlemlerle sınırlı tutun.
  • Kullanıcı beklentileriyle uyumlu olun (+ toplar, * çarpar).
  • Özel işleçleri belgeleyin ve işleç kümesini küçük tutun.
  • Belirsiz ayrıştırmayı önlemek için önceliği ve birleşme yönünü tanımlayın.

İşleçleri doğru tanımlama

Hızlı kontrol: Öncelik grubuyla yeni bir işleç eklemenin doğru yolu hangisidir?

Özet

Özet: İşleçleri yalnızca anlamları açık olduğunda aşırı yükleyin; ayrıştırmayı denetlemek için öncelik grupları ve birleşme yönü tanımlayın; anlaşılır olduklarını doğrulamak için ifadeleri sınayın.

Sıkça Sorulan Sorular

“Operatör aşırı yükleme ve öncelik grupları” dersi ücretsiz mi?

Evet — “Operatör aşırı yükleme ve öncelik grupları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 3 dersten oluşur.

“Operatör aşırı yükleme ve öncelik grupları” dersinde ne öğreneceğim?

Türleriniz için yerleşik operatörleri aşırı yükleyin ve ifadelerin amaçlandığı gibi ayrıştırılması için precedence groups tanımlayın. Tasarımları yalın ve öngörülebilir tutun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“Operatör aşırı yükleme ve öncelik grupları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Operatör aşırı yükleme ve öncelik grupları
  2. Alt simgeler ve özel dizinlere yeniden bakış
  3. Hashable/Equatable/Comparable türetimleri
← Swift Academy Sayfasına Dön