【发布时间】:2017-01-01 20:15:38
【问题描述】:
当我不通用地实现它时(仅使用整数),这个函数可以正常工作,但是当我让它通用时,只更改几个字母而没有明显错误,Swift 无法编译它;我什至不使用函数,只是让我的项目中的文件崩溃。
Xcode 说“发生了内部错误”。我检查了堆栈跟踪,错误被列为“分段错误:11”。我将在下面发布我的代码。
我也可以根据要求发布堆栈跟踪。
import Foundation
func BinSearch<T : Comparable>(elements: [T], target: T) -> Int?{
let maxIndex = elements.count - 1
var rightIndex = maxIndex
var leftIndex = 0
var middleIndex : Int {return lround(Double((rightIndex + leftIndex)) / 2)}
var maxVal : T {return elements[rightIndex]}
var middleVal : T {return elements[middleIndex]}
var minVal : T {return elements[leftIndex]}
while elements[middleIndex] != target {
//test if in infinite loop for target within range of array but DNE
if leftIndex == middleIndex || rightIndex == middleIndex && rightIndex != 1{
return nil
}
//prevent infinite loop due to rounding method
if rightIndex == 1 {
return leftIndex
}
//core code
if target > middleVal {
leftIndex = middleIndex
}else {
rightIndex = middleIndex
}
}
return middleIndex
}
【问题讨论】:
标签: swift xcode generics compiler-errors segmentation-fault