gpt4 book ai didi

ios - 为 CGPoint 和 CGVector 创建快速泛型

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

我正在尝试为 cgpoint 和 cgvector 创建一个非常简单的泛型。我只想插入我的变量,并将 x,y 或 dx,dy 乘以 2

func dblPt<T>(inout point: T){
// double cgpoint, or cgvector

}

我的问题是我想不出如何引用 x 或 y、vs dx 和 dy。我没有使用泛型编写任何东西。完成此任务的最佳方法是什么

最佳答案

您想如何使用协议(protocol)/扩展?这是一个例子。

protocol VectorConvertible {
func toVector() -> CGVector
class func fromVector(vec: CGVector) -> Self
}

extension CGVector: VectorConvertible {
func toVector() -> CGVector { return self }
static func fromVector(vec: CGVector) -> CGVector { return vec }
}

extension CGPoint: VectorConvertible {
func toVector() -> CGVector { return CGVectorMake(x, y) }
static func fromVector(vec: CGVector) -> CGPoint { return CGPointMake(vec.dx, vec.dy) }
}

func dblPt<V: VectorConvertible>(inout v: V) {
let vec = v.toVector()
v = V.fromVector(CGVectorMake(vec.dx * 2, vec.dy * 2))
}

关于ios - 为 CGPoint 和 CGVector 创建快速泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26024123/

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