Law*_*iet 4 generics variables tuples type-alias swift
所以我有一个 typealias 元组
public typealias MyTuple<T> = (key: T, value: String)
Run Code Online (Sandbox Code Playgroud)
在我的 ViewController 中,我想声明一个具有通用数据类型的 MyTuple 数组,因为我仍然不知道 key 的类型。然而,由此看来,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
}
}
Run Code Online (Sandbox Code Playgroud)
我认为解决这个问题的通常方法是将 \xe2\x80\x9cpush\xe2\x80\x9d 类型决策置于依赖链的较高位置,传递给视图控制器:
\n\nclass ViewController<T>: UIViewController {\n var array: [MyTuple<T>]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是有道理的,因为您可能会将控制器视为 \xe2\x80\x9cfoo 控制器\xe2\x80\x9d,其中 \xe2\x80\x9cfoo\xe2\x80\x9d 是 的具体值T。(\xe2\x80\x9cpet 控制器\xe2\x80\x9d、\xe2\x80\x9cproduct 控制器、\xe2\x80\x9d 等)但是,当然您可以\xe2\x80\x99t 创建数组,直到您知道具体类型。