import Foundation
func insertionSort<T where T: Comparable>(var items:[T])-> [T] {
for (index, _) in items.enumerate().dropFirst() {
var j = index
while ((j > 0) && (items[j] < items[j-1])) {
swap(&items[j], &items[j-1])
j = j-1
}
}
return items
}
// Test the function
insertionSort([]) // Generic type array is not taking empty array
当我试图打电话时insertionSort
对于空数组,我得到
Cannot invoke 'insertionSort' with an argument list of type '([_])'
我不知道如何解决这个问题。
要在 Swift 中调用泛型函数,Swift 需要能够推断泛型参数。
向 Swift 提供类型信息的一种方法是使用中间变量。
(就像 Lu_ 的评论中指出的那样。)
let arr: [Int] = []
let result = insertionSort(arr)
另一种方法是使用as
.
let result = insertionSort([] as [Int])
(记住,var
参数不修改实际参数。它只是创建一个可变副本,但不会将其写回原始参数。斯威夫特 3 已删除var
参数,因为它太混乱了。您可能需要将函数的返回值分配给变量。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)