No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Compra acceso a todo Platzi por 1 a帽o

Antes: $249

Currency
$209/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

15D
23H
31M
42S

Rangos

6/33
Recursos

Aportes 18

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Les recomiendo que si tienen dudas o quieran ampliar mas sobre el tema, puedan leer o utilizar la documentaci贸n de Swift. a mi me esta funcionando. Saludos. https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html

Resumen

Hay 3 tipos de rangos:

  • Rango cerrado
  • Rango abierto
  • Rango semi abierto
<h3>Rango cerrado</h3>

El rango cerrado es el que incluye ambos valores: inicio y fin.

for idx in 1...5 {
    print(idx)
}

Output

1
2
3
4
5
<h3>Rango abierto</h3>

Me permite acceder a cada elemento de un Array de varias formas. Esto es muy util al utilizar rangos din谩micos.

Arrancando desde una posici贸n espec铆fica hasta que termine el array:

for name in names[0...] {
    print(name)
}

Arrancando desde el principio hasta un valor final espec铆fico:

for name in names[鈥2] {
    print(name)
}
<h3>Rango semi abierto</h3>

Es el que incluye el valor de inicio pero no el del final:

for idx in 1..<5 {
    print(idx)
}

Output

1
2
3
4

Se escribe un valor inicial, 2 puntos (..) con el s铆mbolo menor < y luego el ultimo valor.

1..<5

Este tipo de rango es el que se utilizara para el manejo de Arrays.

let names = ["Ricardo", "Hernan", "Pedro"]
for i in 0..<names.count {
    print("La persona \(i+1) se llama \(names[i])")
}

Output

La persona 1 se llama Ricardo
La persona 2 se llama Hernan
La persona 3 se llama Pedro

La doc oficial esta muy buena para complementar

//Reto
let thingsOfAHouse = ["Cama", "Mesa", "Cocina", "Sillon", "Television", "Lampara"]
for i in 0...3 {
    print("El articulo de la casa numero \(i+1) es \(thingsOfAHouse[i])" )
}

for things in thingsOfAHouse[0...]{
    print(things)
}

Hay 2 tipos de rangos en Swift:

Cerrados (1鈥5)
Semiabiertos (1鈥<5)
Un solo valor (1鈥) [Hasta donde acabe] (鈥2)

let numbers = [7, 15]

for number in numbers[1...]{
    print(number)
}

for number in numbers[..<2]{
    print(number)
}

for actualNumber in 5...12{
    print(actualNumber)
}

for actualNumber in 5..<12{
    print(actualNumber)
}

let range = 5...12
range.contains(-1)
range.contains(10)
range.contains(25)
```js let newRange = 45..<50 for r in newRange { print ("\(r)") } ```**let** newRange = 45..<50 **for** r **in** newRange { print ("\\(r)") }

馃敘 Rangos y Arrays

Si quieres recorrer todos los elementos de un array, no necesitas usar un rango abierto.

let names = ["Ed", "Juan", "Pedro"]

// Usamos un rango abierto
for  name in names[...2] {
	print(name) // Ed, Juan, Pedro
}

Simplemente elimina los corchetes ( [ ] ) y el bucle recorrer谩 todos los elementos del array autom谩ticamente.

let names = ["Ed", "Juan", "Pedro"]

// Eliminamos los corchetes
for  name in names {
	print(name) // Ed, Juan, Pedro
}

Este es mi ejemplo de esta clase, espero que les sirva a alguien.

Aqui les dejo algo que me realice para listar los nombres de personas separados por coma exceptuando el ultimo item, que seriia con punto

let names = ["Miguel", "Indira", "Alfonso", "Victoria"]

for name in names {
    let lastIndex: Int = names.count - 1
    names[lastIndex] == name ? print(name, terminator: ".") : print(name, terminator: ", ")
}
// Miguel, Indira, Alfonso, Victoria.
//reto
let number1 = 1
let number2 = 10

for idx in number1...number2 {
    print(idx)
}

for idx in number1..<number2 {
    print(idx)
}

for idx in number1... {
    print(idx)
}

let rangeNumber2 = ...number2

let firstNumber = 2
let secondNumber = 9
//rango del primer numero hasta el segundo numero(incluyendolo)
let range1 = firstNumber...secondNumber
//rango del primer numero hasta el segundo numero menos 1(no incluyendolo)
let range2 = firstNumber..<secondNumber
//rango desde un inicio no especifico(-infinito) hasta el segundo numero menos uno(no incluido)
let range3 = ..<secondNumber
//rango desde un inicio no especifico(-infinito) hasta el segundo numero(incluido)
let range4 = ...secondNumber
//rango desde el primer numero hasta un final no especifico(+infinito)
let range5 = firstNumber...

Recorriendo el Array sin rangos XD me salio probando鈥

let names = ["Juan", "Maria", "Iker", "Bimba"]
for name in names{
    print(name)
}
let firstNumber = 7
let lastNumber = 12

//Ranges

let firstToLast = firstNumber...lastNumber
let firstWithoutLast = firstNumber..<lastNumber
let lastIndependentOfFirst = ...lastNumber
let firstIndependentOfLast = firstNumber...

Operador de rango cerrado

  • El operador de rango cerrado ( a...b) define un rango que va desde a hasta b, e incluye los valores a y b. El valor de a no debe ser mayor que b.

  • El operador de rango cerrado es 煤til cuando se itera sobre un rango en el que desea que se usen todos los valores, como con un for- in bucle:

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

Operador de rango medio abierto

  • El operador de rango medio abierto ( a鈥<b) define un rango que va desde a hasta b, pero no incluye b. Se dice que est谩 medio abierto porque contiene su primer valor, pero no su valor final. Al igual que con el operador de rango cerrado, el valor de a no debe ser mayor que b. Si el valor de a es igual a b, el rango resultante estar谩 vac铆o.

  • Los rangos semi abiertos son particularmente 煤tiles cuando se trabaja con listas de base cero, como matrices, donde es 煤til contar hasta (pero sin incluir) la longitud de la lista:

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
  • Hay que tener en cuenta que la matriz contiene cuatro elementos, pero 0鈥<count solo cuenta hasta 3 (el 铆ndice del 煤ltimo elemento de la matriz), porque es un rango medio abierto.

Rangos de una cara

  • El operador de rango cerrado tiene una forma alternativa para rangos que contin煤an lo m谩s lejos posible en una direcci贸n, por ejemplo, un rango que incluye todos los elementos de una matriz desde el 铆ndice 2 hasta el final de la matriz. En estos casos, puede omitir el valor de un lado del operador de rango. Este tipo de rango se denomina rango unilateral porque el operador tiene un valor en un solo lado. Por ejemplo:
for name in names[2...] {
    print(name)
}
// Brian
// Jack

for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian
  • El operador de rango medio abierto tambi茅n tiene una forma unilateral que se escribe solo con su valor final. Al igual que cuando incluye un valor en ambos lados, el valor final no forma parte del rango. Por ejemplo:
for name in names[..<2] {
    print(name)
}
// Anna
// Alex
  • Los rangos unilaterales se pueden usar en otros contextos, no solo en sub铆ndices. No puede iterar sobre un rango unilateral que omite un primer valor, porque no est谩 claro d贸nde debe comenzar la iteraci贸n. Usted puede repetir un solo lado rango que omite su valor final; sin embargo, debido a que el rango contin煤a indefinidamente, aseg煤rese de agregar una condici贸n final expl铆cita para el ciclo. Tambi茅n puede verificar si un rango unilateral contiene un valor particular, como se muestra en el c贸digo a continuaci贸n.
let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true