Loh*_*ith 67 arrays iteration swift
我是Swift的新手.我一直在做Java编程.我有一个在Swift中编码的场景.
以下代码使用Java.我需要在Swift中为以下场景编写代码
// With String array - strArr1
String strArr1[] = {"Some1","Some2"}
String strArr2[] = {"Somethingelse1","Somethingelse2"}
for( int i=0;i< strArr1.length;i++){
System.out.println(strArr1[i] + " - "+ strArr2[i]);
}
Run Code Online (Sandbox Code Playgroud)
我在swift中有几个数组
var strArr1: [String] = ["Some1","Some2"]
var strArr2: [String] = ["Somethingelse1","Somethingelse2"]
for data in strArr1{
println(data)
}
for data in strArr2{
println(data)
}
// I need to loop over in single for loop based on index.
Run Code Online (Sandbox Code Playgroud)
您能否根据索引提供有关循环语法的帮助
Mar*_*n R 128
您可以使用zip(),从两个给定序列创建一对配对:
let strArr1 = ["Some1", "Some2"]
let strArr2 = ["Somethingelse1", "Somethingelse2"]
for (e1, e2) in zip(strArr1, strArr2) {
print("\(e1) - \(e2)")
}
Run Code Online (Sandbox Code Playgroud)
该序列仅列举给定序列/数组的"共同元素".如果它们具有不同的长度,则简单地忽略较长阵列/序列的附加元素.
Raj*_*mar 18
试试这个:
zip([0,2,4,6], [1,3,5,7]).forEach {
print($0,$1)
}
zip([0,2,4,6], [1,3,5,7]).forEach {
print($0.0,$0.1)
}
Run Code Online (Sandbox Code Playgroud)
Jér*_*ucq 13
您还可以enumerate使用一个数组并使用索引查看第二个数组:
Swift 1.2:
for (index, element) in enumerate(strArr1) {
println(element)
println(strArr2[index])
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特2:
for (index, element) in strArr1.enumerate() {
print(element)
print(strArr2[index])
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
for (index, element) in strArr1.enumerated() {
print(element)
print(strArr2[index])
}
Run Code Online (Sandbox Code Playgroud)
Ima*_*tit 12
使用Swift 5,您可以使用以下4种Playground代码之一来解决您的问题。
zip(_:_:)功能在最简单的情况下,您可以zip(_:_:)用来创建初始数组中元素对的新序列(元组)。
let strArr1 = ["Some1", "Some2", "Some3"]
let strArr2 = ["Somethingelse1", "Somethingelse2"]
let sequence = zip(strArr1, strArr2)
for (el1, el2) in sequence {
print("\(el1) - \(el2)")
}
/*
prints:
Some1 - Somethingelse1
Some2 - Somethingelse2
*/
Run Code Online (Sandbox Code Playgroud)
Array的makeIterator()方法和while循环使用简单的while循环和迭代器,同时循环两个数组也很容易:
let strArr1 = ["Some1", "Some2", "Some3"]
let strArr2 = ["Somethingelse1", "Somethingelse2"]
var iter1 = strArr1.makeIterator()
var iter2 = strArr2.makeIterator()
while let el1 = iter1.next(), let el2 = iter2.next() {
print("\(el1) - \(el2)")
}
/*
prints:
Some1 - Somethingelse1
Some2 - Somethingelse2
*/
Run Code Online (Sandbox Code Playgroud)
IteratorProtocol在某些情况下,您可能需要创建自己的类型,以将姓名缩写数组的元素配对。可以通过使您的类型符合来实现IteratorProtocol。请注意,通过使您的类型也符合Sequence协议,您可以在for循环中直接使用它的实例:
struct TupleIterator: Sequence, IteratorProtocol {
private var firstIterator: IndexingIterator<[String]>
private var secondIterator: IndexingIterator<[String]>
init(firstArray: [String], secondArray: [String]) {
self.firstIterator = firstArray.makeIterator()
self.secondIterator = secondArray.makeIterator()
}
mutating func next() -> (String, String)? {
guard let el1 = firstIterator.next(), let el2 = secondIterator.next() else { return nil }
return (el1, el2)
}
}
let strArr1 = ["Some1", "Some2", "Some3"]
let strArr2 = ["Somethingelse1", "Somethingelse2"]
let tupleSequence = TupleIterator(firstArray: strArr1, secondArray: strArr2)
for (el1, el2) in tupleSequence {
print("\(el1) - \(el2)")
}
/*
prints:
Some1 - Somethingelse1
Some2 - Somethingelse2
*/
Run Code Online (Sandbox Code Playgroud)
AnyIterator作为上一个示例的替代方法,您可以使用AnyIterator。以下代码显示了在Array扩展方法中可能的实现:
extension Array {
func pairWithElements(of array: Array) -> AnyIterator<(Element, Element)> {
var iter1 = self.makeIterator()
var iter2 = array.makeIterator()
return AnyIterator({
guard let el1 = iter1.next(), let el2 = iter2.next() else { return nil }
return (el1, el2)
})
}
}
let strArr1 = ["Some1", "Some2", "Some3"]
let strArr2 = ["Somethingelse1", "Somethingelse2"]
let iterator = strArr1.pairWithElements(of: strArr2)
for (el1, el2) in iterator {
print("\(el1) - \(el2)")
}
/*
prints:
Some1 - Somethingelse1
Some2 - Somethingelse2
*/
Run Code Online (Sandbox Code Playgroud)
for(var i = 0; i < strArr1.count ; i++)
{
println(strArr1[i] + strArr2[i])
}
Run Code Online (Sandbox Code Playgroud)
应该可以做到这一点。以前从未使用过 swift,因此请务必进行测试。
更新到最新的 Swift 语法
for i in 0..< strArr1.count {
print(strArr1[i] + strArr2[i])
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21493 次 |
| 最近记录: |