【发布时间】:2017-06-10 04:50:25
【问题描述】:
所以我有一个类型别名元组
public typealias MyTuple<T> = (key: T, value: String)
在我的 ViewController 中,我想声明一个具有通用数据类型的 MyTuple 数组,因为我仍然不知道键的类型。但是,从this 开始,在 Swift 中不可能有泛型类型的变量。还有其他解决方法如下,但我不喜欢其中任何一个。谁有更好的主意?
class ViewController: UIViewController {
var array1 = [MyTuple<T>]() // compile error of course
var array2 = [MyTuple<Any>]() // no point as I'd use `Any` for MyTuple
func getArray<T>(array: Array<MyTuple<T>>) -> Array<MyTuple<T>> {
return array // not a good approach
}
}
【问题讨论】:
-
所以问题是VC会在运行时确定实际的
T类型,因此你不能声明数组[MyTuple<ConcreteType>],对吧? -
@VadimPopov 问题是我有另一个视图控制器 (vcA),它将调用 ViewController 并将数据传递给 MyTuple 数组。到那时我会知道密钥的类型,但不是现在。
标签: swift variables generics tuples type-alias