İçeriğe geç

Swift Protocol Binary Operators

swift

Merhabalar Protocol serisinden bir yazı daha yazmak istedim.Bu yazımda aynı protokolu kullanan sınıflara nasıl operatör aşırı yükleme yaparız bunun örneğini vereceğim.

Kullanışlı bir özellik istediğiniz değişken class içi nesneleri bir biriyle karşılaştırabilir farklı işlemleride bu sayede yapabilirsiniz.

Aşağıdaki yazdığım örnekte aynı protokole sahip sınıfın değişkenlerini karşılaştırdım == operatörü ile diğer bir ön ek fonksiyonu yazarakta + sınıfın dataCount nesnelerini 2 katına çıkarmış olduk.

protocol data {
    
    var id:Int {get}
    var dataCount:Int {get}   
}

class A: data {
    
    var id: Int
    var dataCount: Int
    
    init(id:Int,datacount:Int) {
        
        self.id = id
        self.dataCount = datacount
        
    }
    
    func xDataCount(x:Int) -> Int {
        return dataCount * x
    }
    
}

class B: data {
    
    var id: Int
    var dataCount: Int
    
    init(id:Int,datacount:Int) {
        
        self.id = id
        self.dataCount = datacount
        
    }
    
    func idControl(lastNum:Int) -> Bool {
        
        return id % 10 == lastNum ? true : false
        
    }
}

func == (p1:data,p2:data) -> Bool {
    
    return ((p1.id == p2.id) && p1.dataCount == p2.dataCount) ? true : false
    
}

prefix func + (p1:data) -> Int {
    return p1.dataCount * 2
}

var obj1 = A(id: 231, datacount: 12)
var obj2 = B(id: 231, datacount: 24)

var result = obj1 == obj2 // false

+obj1 // 24
+obj2 // 48

 

Kategori:Swift

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca