Fre*_*Lee 47 arrays tuples swift
我正在尝试将一个元组(例如,2项元组)添加到数组中.
var myStringArray: (String,Int)[]? = nil
myStringArray += ("One", 1)
Run Code Online (Sandbox Code Playgroud)
我得到的是:
无法找到接受提供的参数的'+ ='的重载
提示:我试图对每本参考书的'+ ='进行重载:
@assignment func += (inout left: (String,Int)[], right: (String,Int)[]) {
left = (left:String+right:String, left:Int+right+Int)
}
Run Code Online (Sandbox Code Playgroud)
......但是没有做对.
有任何想法吗?...解?
Mik*_*lan 121
由于这仍然是谷歌在阵列中添加元组的最佳答案,因此值得注意的是在最新版本中情况略有改变.即:
在声明/实例化数组时; 该类型现在嵌套在大括号内:
var stuff:[(name: String, value: Int)] = []
Run Code Online (Sandbox Code Playgroud)
复合赋值运算符,+=
现在用于连接数组; 如果添加单个项目,则需要嵌套在数组中:
stuff += [(name: "test 1", value: 1)]
Run Code Online (Sandbox Code Playgroud)
还值得注意的是,当append()
在包含命名元组的数组上使用时,您可以将要添加的元组的每个属性作为参数提供给append()
:
stuff.append((name: "test 2", value: 2))
Run Code Online (Sandbox Code Playgroud)
Alv*_*son 12
你有两个问题.第一个问题,你没有创建一个"元组数组",你正在创建一个"可选的元组数组".要解决此问题,请更改此行:
var myStringArray: (String,Int)[]? = nil
Run Code Online (Sandbox Code Playgroud)
至:
var myStringArray: (String,Int)[]
Run Code Online (Sandbox Code Playgroud)
其次,你正在创建一个变量,但没有给它一个值.您必须创建一个新数组并将其分配给变量.要解决此问题,请在第一行之后添加以下行:
myStringArray = []
Run Code Online (Sandbox Code Playgroud)
...或者您可以将第一行更改为:
var myStringArray: (String,Int)[] = []
Run Code Online (Sandbox Code Playgroud)
在那之后,这条线路工作正常,您不必担心操作员超载或其他疯狂.你完成了!
myStringArray += ("One", 1)
Run Code Online (Sandbox Code Playgroud)
这是完整的解决方案.高达两行,一行甚至没有改变:
var myStringArray: (String,Int)[] = []
myStringArray += ("One", 1)
Run Code Online (Sandbox Code Playgroud)
斯威夫特4解决方案:
// init empty tuple array
var myTupleArray: [(String, Int)] = []
// append a value
myTupleArray.append(("One", 1))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48239 次 |
最近记录: |