Swift中Tuple的基础类型是什么?我在Swift模块中看到一个提到Tuple但我不能满足以下任何一个:
var x: Tuple
var y: Optional<Tuple>
Run Code Online (Sandbox Code Playgroud)
Tuple是Swift中的编译器魔法还是实际类型?
声明
let x: Tuple
Run Code Online (Sandbox Code Playgroud)
由于两个原因没有意义:
这几乎就像声明一样
let x: Array
Run Code Online (Sandbox Code Playgroud)
这也是禁止的(缺少参数类型)
这里的不同之处还在于Tuple它本身不是一种类型.元组类型由它所包含的元素的类型和它们的数量来定义.
所以Tuple类型没有意义,而是你会有几种类型Tuple2,Tuple3依此类推.每个TupleX都有X类型参数,一旦提供,将定义具体类型.
在swift中,编译器为你创建了这个类型(我没有引用它,但它是我能做的唯一合理的假设),可能达到有限数(我还没有找到).这种类型的命名看起来并不明确,所以你找不到Tuple2,但你会有一个($T1, $T2)类型.
总结一下,Tuple由于几个原因,声明一个参数是没有意义的,但你肯定会有类似的东西
var x: (Int, String)
Run Code Online (Sandbox Code Playgroud)
要么
var y: Optional<(Int, String)>
Run Code Online (Sandbox Code Playgroud)
等等.
为了进一步澄清我的观点,这就是为什么Tuple2并且Tuple3需要两种不同的类型:
class Tuple2<T1,T2> {
init (_ e1: T1, _ e2: T2) {}
}
class Tuple3<T1,T2,T3> {
init (_ e1: T1, _ e2: T2, _ e3: T3) {}
}
Tuple2(1, "string")
Tuple3(1, "string", ["an", "array"])
Run Code Online (Sandbox Code Playgroud)
这可能与编译器生成的类似,您可以很容易地看到每个都TupleX采用不同数量的类型参数,因此我们需要为每个X定义一个类型.
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |