我有一个类型别名:
typealias BeaconId = [String: NSObject]
我想通过做类似的事情来扩展它:
extension BeaconId {}
但这会引发编译错误:
必须在非专用泛型类型“Dictionary”上声明约束扩展,并使用“where”子句指定约束
所以我最终做了:
extension Dictionary where Key: StringLiteralConvertible, Value: NSObject {}
有没有更干净的方法来做到这一点?
Swift 4.2 时更新: 你现在可以这样做
Example:
typealias KeyedNumbers = [String: Int]
extension KeyedNumbers {
func squaredValue(forKey key: String) -> Int {
return self[key]! * self[key]!
}
}
有了这个(相当无用的)扩展,你可以这样做:
let pairs = ["two": 2, "three": 3]
print("2 squared =", pairs.squaredValue(forKey: "two"))
它会打印
2 的平方 = 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)