Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何映射Zip2的值?_Swift - Fatal编程技术网

Swift 如何映射Zip2的值?

Swift 如何映射Zip2的值?,swift,Swift,我有两个数组,比如[1,2,3]和[“a”,“b”,“c”],我想使用Zip2映射压缩的值(1,“a”),(2,“b”),和(3,“c”) 如果我这样做: let foo = map(Zip2([1, 2, 3], ["a", "b", "c"]).generate()) { $0.0 } foo的类型为ZipGenerator2? 有没有办法把它做成一个数组?假设vals是Zip2的结果,我假设它是一个两元组的数组。像这样: let vals = [(1, "a"), (2, "b"), (

我有两个数组,比如
[1,2,3]
[“a”,“b”,“c”]
,我想使用Zip2映射压缩的值
(1,“a”)
(2,“b”)
,和
(3,“c”)

如果我这样做:

let foo = map(Zip2([1, 2, 3], ["a", "b", "c"]).generate()) { $0.0 }
foo的类型为
ZipGenerator2?


有没有办法把它做成一个数组?

假设
vals
Zip2
的结果,我假设它是一个两元组的数组。像这样:

let vals = [(1, "a"), (2, "b"), (3, "c")]
这样,只需对数组调用
map()
方法即可

vals.map { $0.0 }
例如:

> vals.map { $0.1 }
$R16: String[] = size=3 {
  [0] = "a"
  [1] = "b"
  [2] = "c"
}

以下内容将从Zip2的返回值获取一个数组:

var myZip = Zip2([1, 2, 3], ["a", "b", "c"]).generate()
var myZipArray: Array<(Int, String)> = []

while let elem = myZip.next() {
    myZipArray += elem
}

println(myZipArray)    // [(1, a), (2, b), (3, c)]
——现在就开始玩吧——

let myZip = Zip2([1, 2, 3], ["a", "b", "c"])
let myZipArray = Array(myZip)

println(myZipArray)    // [(1, a), (2, b), (3, c)]
我猜我们可以用任何响应
generate()

println(Array("abcde"))  // [a, b, c, d, e]

Zip2是一个结构,而不是元组数组:\当我使用像
map(0..5){$0}
这样的范围的map时,我通过像
array(map(0..5){$0})那样包装它来获得一个数组。我正在为Zip2生成器寻找类似的转换(我认为)。然后不要使用Zip2.:-)这显然是Objective-C时代的遗留问题,在Objective-C时代,元组并不作为一类对象存在。我看到它已经被回答了,但是如果你只是在一个数组结果之后,为什么不这样做:
让foo=map(Zip2([1,2,3],“a”,“b”,“c”){$0.0}
那么
foo
是一个数组。看起来很合理。要么是我没有尝试过,要么是Swift库在我提出这个问题后有所改进。