我已经定义了一个协议:
public protocol VariableTable {
subscript(key:String) -> Decimal? { get set }
}
仅表示VariableTable
必须为String-> Decimal提供下标运算符。
显然,Dictionary<String, Decimal>
符合该要求。我如何让编译器知道?
extension Dictionary<String, Decimal> : VariableTable {}
的产率:
Constrained extension must be declared on the unspecialized generic type 'Dictionary' with constraints specified by a 'where' clause
其中:
extension Dictionary : VariableTable where Key == String, Value == Decimal {}
或:
extension Dictionary : VariableTable where Element == (String, Decimal) {}
导致错误:
Extension of type 'Dictionary' with constraints cannot have an inheritance clause
答案 0 :(得分:1)
这在Swift 3.0中是不可能的。
但是如果你关心的只是拥有这个EmpID TotalRating IsEMPTL
---------------------------------
1 13 YES
5 4 YES
下标,你可以将字典包装成符合协议的另一种类型:
VariableTable