İçeriğe geç

Swift ile Operator Overloading

swift

Merhabalar bu yazımda C++‘da örneğini gördüğümüz operatör aşırı yükleme işlemini Swift dili ile nasıl yaparız. Bunun örneğini vereceğim.

Operator aşırı yükleme nedir ? Int tipi ile Int tipindeki değişkenleri bir biri ile toplayıp çıkarabildiğimiz gibi aynı tipden struct veya class’ıda toplayıp çıkarabiliriz.Bunu operator aşırı yükleme sayesinde yaparız.

Aşağdaki verdiğim örnekte göreceğiniz gibi farklı aşırı yükleme işlemleri yapılabilmekte.

struct vektor {
    
    var x:Float = 0.0
    var y:Float = 0.0

}

func + (left:vektor,right:vektor)->vektor {
    return vektor(x: left.x + right.x, y: left.y + right.y)
}

var st1 = vektor(x: 3.0, y: 1.0)
var st2 = vektor(x: 1.0, y: 2.0)

print(st1 + st2) //x: 4.0 y: 3.0


prefix func - (vec:vektor)->vektor {
    
    return vektor(x: vec.x * -1, y: vec.y * -1)
    
}

var stneg = vektor(x: 1.3, y: 3.4)
print(-stneg) // x: -1.3 y: -3.4


infix operator +- {associativity left precedence 140}

func +- (left:vektor,right:vektor)->vektor {
    return vektor(x: left.x + right.x, y: left.y - right.y)
}

var str1 = vektor(x: 3.0, y: 1.0)
var str2 = vektor(x: 1.0, y: 2.0)

print(str1 +- str2) // x: 4.0 y: -1.0

 

 

Tarih:iOSSwift

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca