ios - 如何扩展 K :String and V:String 的 Swift 字典

标签 ios swift generics

我在想下面的语法:

extension Dictionary where Key:String,Value:String{
    func addIfNew(key:String,value:String){
      print("new item added: \(key) with value: \(value)")
    }
}

例如:该函数将记录任何新添加的数据

最佳答案

这应该够了......

protocol P {}
extension String: P {}
extension Dictionary where Key:P, Value:P {
    func addIfNew(key:String, value:String){
        print("new item added: \(key) with value: \(value)")
    }
}

let d:[String:String] = [:]

不要让其他类型符合 P 就可以了

在 Swift3 中

extension Dictionary where Key == String, Value == String {
    func addIfNew(key:String, value:String){
        print("new item added: \(key) with value: \(value)")
    }
}
let d:[String:String] = [:]
d.addIfNew(key: "a", value: "A")

关于ios - 如何扩展 K :String and V:String 的 Swift 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813877/

相关文章:

ios - 是否可以缩短大量不断检查 bool 值的代码

ios - 在 viewDidLoad 之前编写 init 方法将模型传递给 View Controller

ios - 如何声明具有符合协议(protocol)的具体返回类型的函数?

java - 以多态方式将 Java 枚举值转换为字符串列表

ios - 动画 CATextLayer 的 foregroundColor 属性

ios - Xcode 9 - iOS 11 设备日志私有(private)

ios - 在我的 iOS 应用程序中使用条形码扫描仪(如 Grabba)

ios - 批量获取 Parse 和 Swift 2

ios - 每次导航 Controller 弹出堆栈时都执行segue

java - 如何确保类型参数不可变