【发布时间】:2021-01-31 09:34:33
【问题描述】:
在 Swift 中,我们分配这样的元组 var (x,y):(String,String)=("","") 或省略类型 decl var (x,y)=("","");但是var (x:p,y:q)=("","") 是什么意思?它编译的是 Swift 5.3.3 并将 p 和 q 视为变量,这太奇怪了。
谁能解释一下?
【问题讨论】:
-
对你得到的答案有任何反馈吗?
在 Swift 中,我们分配这样的元组 var (x,y):(String,String)=("","") 或省略类型 decl var (x,y)=("","");但是var (x:p,y:q)=("","") 是什么意思?它编译的是 Swift 5.3.3 并将 p 和 q 视为变量,这太奇怪了。
谁能解释一下?
【问题讨论】:
如果你看到以下内容,你能想到什么吗?
var (x: p, y: q) = (x: "", y: "")
你知道,在 Swift 中,元组可能有标签。
在当前的 Swift 实现中,Swift 编译器将 x 和 y 视为您显示的示例中元组的标签。
【讨论】:
var (x:p,y:q)=("","")
您声明了 2 个变量 p 和 q,它们是元组的一部分,它们的类型由初始值 "" 隐式给出。这个元组也有标签 x 和 y。
这也可以用显式类型声明
var (x: p, y: q): (x: String, y: String)
现在您可以将变量用作元组或单独使用
(p, q) = ("foo", "bar")
q = "bar"
(x: p, y: q) = ("foo", "bar")
(x: p, y: q) = (x: "foo", y: "bar")
【讨论】: