gpt4 book ai didi

arrays - 我可以在 Array 上创建一个约束扩展,以便它只在 [CGPoint] 上运行吗

转载 作者:行者123 更新时间:2023-11-28 15:58:32 24 4
gpt4 key购买 nike

<分区>

我正在设计一个函数,它将采用 CGPoints 数组,将其视为折线的端点,并使用 Catmull-Rom 平滑插入中间点以创建通过这些点的曲线的近似值。

函数可以定义为全局函数:

func smoothPoints(array: [CGPoint], granularity: Int = 4) -> [CGPoint] {
return [CGPoint]() //Placeholder code for actual implementation
}

但我希望能够将它定义为 Array 类型的受限扩展,这样它就只会对 CGPoint 的数组进行操作。这可能吗?

我能在 Swift 3 中找到的唯一受限扩展示例将数组元素限制为符合协议(protocol)的对象,而不是特定数据 (Struct) 类型。

看来我应该能够做这样的事情:

extension Array where Element: CGPoint {
func smoothPoints(granularity: Int = 4) -> [CGPoint] {
}
}

但这给了我一个错误“type 'Element' constrained to non-protocol type 'CGPoint'”。

声明

 extension Array<CGPoint>

...也不起作用。

似乎应该可以定义仅对特定类型的数组进行操作的 Array 类的扩展,但我不知道该怎么做。

在 Swift 3 中我尝试做的事情是否可行,或者我是否坚持使用全局函数?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com