Property wrappers - 2

Aşağıdaki yazıda property wrappers konusuna değinip bir örnek ile konu anlatılmıştı.

Property wrappers
Property wrappers, Class’larımızda bir değer atarken veya bir değer okurken get ve set metotları ile istediğimiz gibi düzenleme yapabilmekteyiz. Ancak bu durum çok fazla tekrar ediyorsa ve benzer işlemleri tekrar tekrar yapmak gerekiyorsa kullanılabileceğiniz güzel bir özelliktir. Böylece kodların k…

Yine güzel bir örnek konuyu zengileştirmek istedim.

String'in upper case olması Property wrappers ile sağlanabilir ve bu örnek bir çok yerde kullanılabilir. Örnek olması açısından havayolları şirketlerinin kullanmış olduğu uçuş numarası verilebilir. servisten küçük harf ile dönüyor olabilir anca UI'da bunu büyük harf ile gösterilmesi gerekebilir. Aşağıda kullanımına bir örnek gösterilmiştir.


@propertyWrapper
class UpperCase {
    
    private(set) var value: String = ""
    
    var wrappedValue: String {
        get { value }
        set {
            value = newValue.uppercased()
        }
    }
     
}

struct Flight {
    @UpperCase
    var number: String
    @UpperCase
    var destination: String
    
    init(number: String) {
        self.number = number
    }
}
var flight = Flight(number: "tk1497")
flight.destination = "ist"
print("\(flight.number) to \(flight.destination)")
//TK1497 to IST

Konu için detaylı kaynaklar:

Property Wrappers in Swift explained with code examples
Learn how to create Property Wrappers in Swift. Use the @propertyWrapper to remove boilerplate, improve readability, and clean up code.
Property wrappers in Swift | Swift by Sundell
This week, let’s take a look at how Swift’s property wrappers work, and explore a few examples of situations in which they could be really useful.