基本上我希望能够传入 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)
}
最佳答案
您可以按如下方式进行:
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
关于ios - 我可以传入 Set<Int> 或 [Int] 的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624895/