【发布时间】:2014-09-23 01:46:50
【问题描述】:
我正在尝试一些可能的方法来一次从 Swift 字典中提取多个值。目标是做这样的事情:
var dict = [1: "one", 2: "two", 3: "three"]
dict.multiSubscript(2...4) // Should yield ["two", "three", nil]
或者这个:
dict.multiSubscript([1, 2]) // Should yield ["one", "two"]
换句话说,似乎应该可以为任何符合 SequenceType 的下标类型通用地实现 multiSubscript()。
然而,Swift 似乎不喜欢下面的实现,而且错误信息也不是很清楚:
extension Dictionary {
func multiSubscript<S: SequenceType where S.Generator.Element == Key>(seq: S) -> [Value?] {
var result = [Value?]()
for seqElt in seq { // ERROR: Cannot convert the expression's type 'S' to type 'S'
result += self[seqElt]
}
return result
}
}
这似乎是对泛型约束的相对简单的使用。有人看到我做错了吗?
对于奖励积分,有没有办法实现这一点以允许使用正常的下标语法?例如:
dict[2...4] // Should yield ["two", "three", nil]
【问题讨论】:
标签: dictionary swift generics