Swift for loop: ¿se usa para indexar elementos en una matriz?

Este artículo fue traducido de: Swift for loop: for index, element in array?

¿Existe una función que pueda usar para iterar sobre una matriz y tener tanto índice como elemento, como el enumerado de Python? ¿Hay una función que pueda usarse para atravesar la matriz y tener índices y elementos, como la enumeración de Python?

for index, element in enumerate(list):
    ...

Piso # 1

Referencia: https://stackoom.com/question/1cotB/Swift-for loop-for index-elements en la matriz


# 2F

Sí. Sí. A partir de Swift 3.0, si necesita el índice para cada elemento junto con su valor, puede usar el enumerated()método para iterar sobre la matriz. A partir de enumerated() Swift 3.0, si necesita el índice de cada elemento y su valor, puede usar el método transversal Array Devuelve una secuencia de pares compuesta por el índice y el valor de cada elemento de la matriz. Devuelve una secuencia de pares que consiste en el índice y el valor de cada elemento de la matriz . Por ejemplo: Por ejemplo:

for (index, element) in list.enumerated() {
  print("Item \(index): \(element)")
}

Después de Swift Swift 3.0 y el 2.0 Antes, fue la función llamada enumerate(): Después de 3.0 antes de Swift y Swift 2.0, esta función se llama enumerate():

for (index, element) in list.enumerate() {
    print("Item \(index): \(element)")
}

Antes de Swift 2.0, enumerateera una función global. Antes de Swift 2.0, enumerateera una función global.

for (index, element) in enumerate(list) {
    println("Item \(index): \(element)")
}

Piso # 3

La encontré el este de hacer eso con una respuesta al mismo tiempo buscando una manera de diccionario , y resulta que es todo lo fácil de adaptar, el Justo pasar una tupla durante al elemento. Estoy mirando para utilizar diccionario para encontrar el tiempo para hacerlo método que es Resulta que la respuesta es que es muy fácil ajustarlo, solo pasa una tupla para el elemento.

// Swift 2

var list = ["a": 1, "b": 2]

for (index, (letter, value)) in list.enumerate() {
    print("Item \(index): \(letter) \(value)")
}

# 4F

A partir de Swift 2, la función de enumeración debe llamarse en la colección de la siguiente manera: a partir de Swift 2, debe llamar a la función de enumeración en la colección, como se muestra a continuación:

for (index, element) in list.enumerate() {
    print("Item \(index): \(element)")
}

# 5F

Llamado el Proporciona. 5 Método A Swift enumerated()para Array. . SWIFT 5 para Arrayproporcionar un llamado enumerated()método. enumerated()tiene la siguiente declaración enumerated():

func enumerated() -> EnumeratedSequence<Array<Element>>

Devuelve una secuencia de pares (n, x), donde n representa un número entero consecutivo que comienza en cero yx representa un elemento de la secuencia. Devuelve un par de secuencias (n, x), donde n representa un continuo desde cero Entero, x representa un elemento de la secuencia.


Los casos más simples del A, En mayo se utilizan enumerated()por bucle A. En el caso más simple, se pueden enumerated()utilizar con el bucle. Por ejemplo: Por ejemplo:

let list = ["Car", "Bike", "Plane", "Boat"]
for (index, element) in list.enumerated() {
    print(index, ":", element)
}

/*
prints:
0 : Car
1 : Bike
2 : Plane
3 : Boat
*/

Sin embargo, tenga en cuenta que no está limitado a usarlo enumerated()con un bucle for. Pero tenga en cuenta que no está enumerated() limitado a usarlo con un bucle for . De hecho, una A, si va a utilizar enumerated()con un bucle de algo similar a en el siguiente código, se están haciendo incorrecto: De hecho, si va a enumerated()utilizar con un bucle, al igual que el siguiente código, a continuación, te equivocaste :

let list = [Int](1...5)
var arrayOfTuples = [(Int, Int)]()

for (index, element) in list.enumerated() {
    arrayOfTuples += [(index, element)]
}

print(arrayOfTuples) // prints [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

Una forma más rápida de hacer esto es: Una forma más rápida es:

let list = [Int](1...5)
let arrayOfTuples = Array(list.enumerated())
print(arrayOfTuples) // prints [(offset: 0, element: 1), (offset: 1, element: 2), (offset: 2, element: 3), (offset: 3, element: 4), (offset: 4, element: 5)]

Alternativa un AS, es posible utilizar también enumerated()con map: Además, también se puede enumerated()con map:

let list = [Int](1...5)
let arrayOfDictionaries = list.enumerated().map { (a, b) in return [a : b] }
print(arrayOfDictionaries) // prints [[0: 1], [1: 2], [2: 3], [3: 4], [4: 5]]

Por otra parte, si bien pero tiene algunas limitaciones , forEachpuede ser un buen reemplazo a un bucle for: También, aunque tiene algunas limitaciones , pero forEachpuede ser una buena alternativa para el bucle:

let list = [Int](1...5)
list.reversed().enumerated().forEach { print($0, ":", $1) }

/*
prints:
0 : 5
1 : 4
2 : 3
3 : 2
4 : 1
*/

A usando Por enumerated()y makeIterator(), se puede en la iterate incluso su manual Array. Mediante el uso enumerated()y makeIterator(), incluso se puede Arrayiterar en forma manual. Por ejemplo: Por ejemplo:

import UIKit
import PlaygroundSupport

class ViewController: UIViewController {

    var generator = ["Car", "Bike", "Plane", "Boat"].enumerated().makeIterator()

    override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButton(type: .system)
        button.setTitle("Tap", for: .normal)
        button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
        button.addTarget(self, action: #selector(iterate(_:)), for: .touchUpInside)
        view.addSubview(button)
    }

    @objc func iterate(_ sender: UIButton) {
        let tuple = generator.next()
        print(String(describing: tuple))
    }

}

PlaygroundPage.current.liveView = ViewController()

/*
 Optional((offset: 0, element: "Car"))
 Optional((offset: 1, element: "Bike"))
 Optional((offset: 2, element: "Plane"))
 Optional((offset: 3, element: "Boat"))
 nil
 nil
 nil
 */

Piso # 6

Esta es la fórmula del bucle de enumeración: esta es la fórmula para enumerar el bucle:

for (index, value) in shoppingList.enumerate() {
print("Item \(index + 1): \(value)")
}

Más del detalle que puede el Registro de aquí . Para obtener información más detallada, por favor haga clic aquí .

Publicado 0 artículos originales · elogiado 8 · 30,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/asdfgh0077/article/details/105452170
Recomendado
Clasificación