क्या होगा यदि मैं एक प्रोटोकॉल के अनुरूप होना चाहता हूं और प्रोटोकॉल एक संपत्ति नाम को परिभाषित करता है जो मुझे पसंद नहीं है?
उदाहरण के लिए:

struct Currency: Identifiable {
    let id: String
    let rate: Double
}

लेकिन इस मामले में "आईडी" संपत्ति के लिए अधिक सार्थक नाम रखना बहुत अच्छा होगा। तो मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:

struct Currency: Identifiable {
    propertyalias iso = id
    let iso: String
    let rate: Double
}
1
Roman 16 अप्रैल 2020, 12:05

2 जवाब

सबसे बढ़िया उत्तर

"संपत्ति उपनाम" जैसी कोई चीज़ नहीं है।

हालांकि, आप संपत्ति को एक गणना की गई संपत्ति में लपेट सकते हैं जिसे आप नाम दे सकते हैं जैसा कि आप फिट देखते हैं।

struct Currency: Identifiable {
    let iso: String
    let rate: Double

    var id: String { 
        iso
    }
}
8
Dávid Pásztor 16 अप्रैल 2020, 09:09

स्विफ्ट 5.2+ के लिए समाधान
से प्रेरित होकर स्विफ्ट कीपाथ कैसे चलते हैं हम अधिक प्राकृतिक कोड लिखते हैं

protocol MyIdentifiable: Identifiable {
    associatedtype ID
    static var idKey: KeyPath<Self, ID> { get }
}

extension MyIdentifiable {
    var id: ID {
        self[keyPath: Self.idKey]
    }
}

struct Currency: MyIdentifiable {
    static let idKey = \Self.iso
    let iso: String
    let rate: Double
}
0
Roman 4 सितंबर 2020, 08:38