İçeriğe geç

Swift 3 ile infix operator kullanımı

Swift 3

Merhabalar bu yazımda Swift 3 ile kullanımı değişen yenilikler gelen diğer bir yapıda operator aşırı yükleme ön eki olan farklı operatörler kullanabilmenizi sağlayan infix ön eki oldu.

Bu ek sayesinde dilediğimiz sembollerde fonksiyon yazıp kullanıyoruz. Bu operatöre ek olarak precedencegroup adlı bir kullanım geldi. Bu yapı ile beraber oluşturdugunuz operatörlerin kullanım önceliği gibi özelliklerini kendiniz belirleyebiliyorsunuz. Bununla ilgili detaylı bir yazıda yazacağım.

Aşağıda verdiğim örneği inceleyebilirsiniz kullanımı oldukça basit. Extension olarak Point Structuna eklediğim fonksiyonları nesneler üzerinde etkilerini görebilirsiniz.

struct Point {
    
    var x:Float
    var y:Float
    
}


infix operator <>

extension Point {
    
    static func + (lhs:Point,rhs:Point) -> Point {
        
        return Point(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
        
    }
    
    static func - (lhs:Point,rhs:Point) -> Point {
        
        return Point(x: lhs.x - rhs.x, y: lhs.y - rhs.y)
        
    }
    
    static func > (lhs:Point,rhs:Point) -> Bool {
        
        return lhs.x > rhs.x && lhs.y > rhs.y
        
    }
    
    static func <> (lhs:Point,rhs:Point) -> Bool {
        
        return lhs.x == rhs.x && lhs.y == rhs.y
        
    }
    
}

var pointObj = Point(x: 2.1, y: 4.2)
var obj = Point(x: 1.2, y: 2.5)

pointObj <> obj // false

pointObj > obj // true

var p = pointObj + obj

p.x // 3.3
p.y // 6.7

Not:Belirli operatör işaretlerini infix ile belirtmenize gerek yok. Olmayan işaretleri belirtmek zorundasınız aksi halde Xcode uyarı verecektir.

Tarih:SwiftSwift 3

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca