Swift 属性别名(可以说是最优雅的身份验证解决方案)
如果我想遵守协议,并且协议定义了我不喜欢的属性名称,该怎么办?Swift 属性别名(可以说是最优雅的身份验证解决方案),swift,protocols,Swift,Protocols,如果我想遵守协议,并且协议定义了我不喜欢的属性名称,该怎么办? 例如: struct Currency: Identifiable { let id: String let rate: Double } 但在这种情况下,最好为“id”属性指定一个更有意义的名称。所以我希望能够做到这样: struct Currency: Identifiable { propertyalias iso = id let iso: String let rate: Doub
例如:
struct Currency: Identifiable {
let id: String
let rate: Double
}
但在这种情况下,最好为“id”属性指定一个更有意义的名称。所以我希望能够做到这样:
struct Currency: Identifiable {
propertyalias iso = id
let iso: String
let rate: Double
}
没有所谓的“财产别名” 但是,可以将该属性包装在计算属性中,并根据需要命名该属性
struct Currency: Identifiable {
let iso: String
let rate: Double
var id: String {
iso
}
}
没有所谓的“财产别名” 但是,可以将该属性包装在计算属性中,并根据需要命名该属性
struct Currency: Identifiable {
let iso: String
let rate: Double
var id: String {
iso
}
}
Swift 5.2+解决方案
灵感来自
协议MyIdentified:可识别{
关联类型ID
静态变量idKey:KeyPath{get}
}
可识别扩展名{
变量id:id{
self[keyPath:self.idKey]
}
}
结构货币:myc{
静态let idKey=\Self.iso
让iso:字符串
出租率:双倍
}
Swift 5.2+解决方案灵感来自
协议MyIdentified:可识别{
关联类型ID
静态变量idKey:KeyPath{get}
}
可识别扩展名{
变量id:id{
self[keyPath:self.idKey]
}
}
结构货币:myc{
静态let idKey=\Self.iso
让iso:字符串
出租率:双倍
}
您的最佳选择可能是在计算属性中包装id
。您的最佳选择可能是在计算属性中包装id
。