gpt4 book ai didi

swift - 定义在闭包中使用的泛型类型

转载 作者:行者123 更新时间:2023-11-30 10:11:10 31 4
gpt4 key购买 nike

我想定义一个在闭包中使用的泛型类型,该闭包被定义为类上的实例变量。我想传入一个泛型类型的数组,并确保输出的类型与输入的类型相同。我已经这样编写了(使用 Swift 2.0),但它没有构建:

    var resultProcessing     :  <T: MyObjectType>((obj:Array<T>) -> Array<T>)?

有什么想法吗?

最佳答案

没有。 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函数:

myFunc?(myArray)

我认为这就是您所需要的。我说得对吗?

关于swift - 定义在闭包中使用的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32972819/

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