我想定义一个泛型类型,用于一个闭包,它被定义为一个类的实例变量。我想传入一个泛型类型的数组,并确保出现的相同类型与进入的类型相同。我已经像这样写了(使用Swift 2.0),但它没有构建:
var resultProcessing : <T: MyObjectType>((obj:Array<T>) -> Array<T>)?
有什么想法吗?
答案 0 :(得分:1)
没有。 resultProcessing
是变量,变量必须具有特定类型,并且不能是通用的。
通用函数和类对于定义一些常见于许多类型的算法非常有用。 想象一下,您有不同的算法可以应用于任何类型的数组(例如,不同的排序算法)。因此,您为每个算法实现了通用函数:
func myFunc1<T>(obj: [T]) -> [T] {
// body
}
func myFunc2<T>(obj: [T]) -> [T] {
// body
}
在您将应用此功能的上下文中,您始终具有特定类型。例如,您的数组将包含字符串:
let myArray = ["one", "two", "three"]
接下来,根据您的条件定义将分配给特定功能的变量:
var myFunc: ([String] -> [String])?
if myConditionIsTrue {
myFunc = myFunc1
} else {
myFunc = myFunc2
}
然后你可以调用apply函数到array:
myFunc?(myArray)
我认为这就是你需要的。我是对的吗?