Swift错误:无法将"ArraySlice"类型的值转换为预期的参数类型

chr*_*s P 22 arrays swift

我收到了这个错误,并且是Swift的新手.我想取一个数组> = 5的最后5个点,并将这5个点作为数组参数传递给函数.我怎样才能实现这个并克服这个错误?

无法将'ArraySlice'类型的值转换为预期的参数类型'[CGPoint]'

if (self.points?.count >= 5) {
    let lastFivePoints = self.points![(self.points!.count-5)..<self.points!.count]
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
Run Code Online (Sandbox Code Playgroud)

deo*_*hal 30

您需要转换ArraySliceArray使用方法Array(Slice<Type>)

if (self.points?.count >= 5) {
    let lastFivePoints = Array(self.points![(self.points!.count-5)..<self.points!.count])
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是否定了ArraySlice通过实例化一个新Array的优势吗?导致另一次内存分配。 (2认同)