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
Bu yazı yorumlara kapalı.