基本上我希望能够传递Set<Int>
或[Int]
或任何事情至少,我可以遍历一组无序的Int
。
我宁愿不必将[Int]
转换为Set<Int>
(反之亦然)。我希望避免使用需要不同内容([Int]
或Set<Int>
)但执行相同操作的函数,这就是我现在正在做的事情。
我在很多地方使用此功能,而来电者有时关心订单([Int]
),有时不关心(Set<Int>
)。但该功能不需要任何特定的顺序。
这样的事情:
extension SequenceType where Generator.Element: Int { }
但作为参数。
功能示例(根据要求):
上面解释的Int
只是为了简化,我的例子是一些数据对象。
struct TextNumber {
let text: String
let number: Int
}
以下是我想对数据做些什么的要点。
func sendUpTextNumberArray(arrayOfTextNumber: [TextNumber]) {
var convertedData = [[String:AnyObject]]()
for textNumber in arrayOfTextNumber {
convertedData.append(textNumber.convert())
}
Service.sendJSON(convertedData)
}
答案 0 :(得分:2)
您可以执行以下操作:
Swift 2
let setOfIntegers = Set([1,2,3])
let arrayOfIntegers = [1,2,3]
func sum<T: SequenceType where T.Generator.Element == Int>(integers: T) -> T.Generator.Element {
return integers.reduce(0, combine: +)
}
sum(arrayOfIntegers) // 6
sum(setOfIntegers) // 6
Swift 3
func sum<T: Sequence where T.Iterator.Element == Int>(_ integers: T) -> T.Iterator.Element {
return integers.reduce(0, combine: +)
}
sum(arrayOfIntegers) // 6
sum(setOfIntegers) // 6