Los operadores básicos son +, -, *, / y %. Swift eliminó ++ y -- en Swift 3. El operador módulo admite negativos y el signo sigue al dividendo:
let a = 17, b = 5
print(a + b) // 22
print(a - b) // 12
print(a * b) // 85
print(a / b) // 3 (division entera)
print(a % b) // 2
print(-7 % 3) // -1 (signo del dividendo)
var n = 0; n += 1 // en lugar de n++
Comparación y lógicos
let x = 5, y = 10
print(x == y) // false
print(x != y) // true
print(x < y) // true
print(x >= 5) // true
// Ternario
let desc = x < y ? "menor" : "mayor o igual"
print(desc) // menor
// Logicos
print(true && false) // false
print(true || false) // true
print(!true) // false
Operadores de rango
a...b es el rango cerrado (incluye b) y a..<b el semiabierto (excluye b). Ambos son tipos de primera clase en Swift:
for i in 1...5 { print(i, terminator: " ") }
// 1 2 3 4 5
for i in 0..<5 { print(i, terminator: " ") }
// 0 1 2 3 4
let nombres = ["Ana", "Bob", "Cris", "Dan"]
for n in nombres[2...] { print(n) }
// Cris, Dan
let rango = 1...100
print(rango.contains(50)) // true
print(rango.count) // 100
Nil-coalescing ??
let entrada: String? = nil
let resultado = entrada ?? "por defecto"
print(resultado) // por defecto
// Encadenado
let primero: Int? = nil
let segundo: Int? = nil
let valor = primero ?? segundo ?? 0 // 0
Asignación compuesta
var total = 100
total += 50 // 150
total -= 30 // 120
total *= 2 // 240
total /= 3 // 80
total %= 7 // 3
Para operadores bit a bit, overflow (&+, &-) y personalizados consulta el artículo de operadores avanzados de esta misma serie.
