3
我正在玩弄一些可能的方法來從Swift詞典中一次提取多個值。我們的目標是做這樣的事情:從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"]
換句話說,現在看來似乎應該是可以實現multiSubscript()
一般對於任何序列類型符合的標型。
然而,斯威夫特似乎並不像下面的實現,並且錯誤信息是不是很有啓發:
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]
感謝您的支持。有趣的是,沒有顯式類型的'SequenceOf(seq)'也不起作用。 (該錯誤消息同樣很模糊:'不能用'S'類型的參數調用'init')。實際上,查看Swift頭文件,'SequenceOf'的'init(sequence)'方法對通過的序列類型 - 關於序列類型的說法似乎很完美,例如在這個例子中'SequenceOf(seq)''。然後'seqElt'的類型是'String','self [seqElt]'是無效的,但'for'循環似乎沒有問題。 –
GSnyder
2014-09-24 01:41:46