İçeriğe geç

Swift 3 ile CustomStringConvertible kullanımı

Swift 3

Merhabalar bu yazımda Swift 3 ile sınıflara,structlara ve enumlara yardımcı conform protocol olan CustomStringConvertible nedir ? nasıl kullanırız ? örneği vereceğim.

CustomStringConvertible gömülü bir protokoldür. Bu protokol debug ve kullanıcıya üretilen çıktı işlemlerinde oldukça işe yarar durum oluşturur. Buna benzer diğer protokolleride ilerleyen yazılarımda sizlerle paylaşacağım.

Protokoller Swift dilinin temelini ve olmassa olmazlarını oluşturan kullanışlı ve güzel bir yapılardır. POP programlama ve OOP programlama tasarımını birlikte barındıran dile güç ve efektiv kod yazımı sağlar.

Aşağıda CustomStringConvertible’ı güzel bir şekilde açıklayan yazdığım örneği inceleyebilirsiniz.

struct point {
    var x:CGFloat
    var y:CGFloat
}

var p = point(x: 2.1, y: 4.2)
print(p) // 2.1 ve 4.2

extension point:CustomStringConvertible {
    var description:String {
        return "\(x) ve \(y)"
    }
}

description değişkenine dilediğiniz String değerini Struct çıktısı olarak return ettirebilirsiniz.

enum State: Error,CustomStringConvertible {
    
    case online(msg:String)
    case offline(msg:String)
    
    var description: String {
        switch self {
        case .online(msg: let message): return message
        case .offline(msg: let message): return message
        }
    }
    
}

func errorTest(x:Int) throws {
    
    guard x != 80 else {
        
        throw State.online(msg: "HTTP PORT")
    }
    
    throw State.offline(msg: "Diffrent port!")
    
}

do {
     try errorTest(x: 512)
} catch let error {
    print(error) // Diffrent port!
}

Bu örneğimde’de Error Handling işleminde verdiğimiz çıktıyı, yardımcı CustomStringConvertible protokolünü kullanarak temiz ve düzgün bir hale getirmiş oluruz.

Bu örneğimde’de sınıfları PHP‘de bulunan magic metodlara benzer bir şekilde. Print ile ekrana çıktı üretebiliriz.

class A:CustomStringConvertible {
    
    var i:Int
    
    init(i:Int) {
        self.i = i
    }
    
    var description:String {
        get {
            return "\(i) node"
        }
    }
    
}

var obj = A(i: 99)
print(obj) // 99 node

 

Kategori:SwiftSwift 3

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca