繁体   English   中英

是否有 Array 和 ArraySlice 都实现的 swift 协议

[英]Is there a swift protocol which Array and ArraySlice both implement

如果我想让 function 接受[Double]ArraySlice<Double> ,我应该在 swift 5 中使用什么类型?

换句话说,是否有某种类型可以让我将以下两个声明合并为一个,以便可以使用其中一个或另一个调用 function?

func appendToX(_ data: ArraySlice<Double>) 
func appendToX(_ data: [Double]) 

正如@MartinR 在评论中所说,它们都符合RandomAccessCollection协议,但是由于RandomAccessCollection具有 Self 或关联类型要求,因此您需要在函数中使用泛型:

func appendToX<T: RandomAccessCollection>(_ data: T) where T.Element == Double, T.Index == Int {

}

Swift 5.6

由于最近对 Swift 的 generics UI 的几项改进,您可以将原来的两个 function 声明替换为以下内容:

func appendToX(_ data: any RandomAccessCollection<Double>) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM