将generics应用于variables和函数 – Swift

我试图在swift中使用generics,以初始化Vector3D类中的variables。 然而,分配协议'数字'给我的variables(使其成为一个双或浮动),我得到以下错误:

Protocol“Number”只能用作通用约束,因为它具有Self或相关types的要求

public protocol Number { func +(l: Self, r: Self) -> Self } extension Double : Number {} extension Float : Number {} class Vector3D: NSObject { var xCord: Number var yCord: Number var zCord: Number func Vector3D(x: [Number], y: [Number], z: [Number]) { self.xCord = x self.yCord = y self.zCord = z } } 

那么我的问题是,如何将generics快速地应用于variables和函数?

你不能像在这个答案中已经显示的那样在generics中添加generics,但是你可以将generics添加到如下的函数中:

 func swapTwoValues<T>(inout a:T, inout b:T){ let temporaryA = a a = b b = temporaryA } 

检查苹果文档。

通用在这里创build<T> 。 这就像一个types的variables。 你可以把T改成任何你想要的东西,只要它不是作为Type的某个地方使用。 约束位是: Number 。 它将T的types限制在遵守号码协议的types上。

 func Vector3D<T: Number>(x: [T], y: [T], z: [T]) { self.xCord = x self.yCord = y self.zCord = z } 

正如在另一个答案中所述,variables和常量不能是genericstypes。