extension - swift syntax
¿Hay una manera bonita de incrementar un Int opcional? (3)
Quiero aumentar un Int?
Actualmente he escrito esto:
return index != nil ? index!+1 : nil
¿Hay alguna forma más bonita de escribir esto?
En aras de la completitud, Optional
tiene un método map()
:
/// If `self == nil`, returns `nil`. Otherwise, returns `f(self!)`.
@warn_unused_result
@rethrows public func map<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U?
Por lo tanto
index != nil ? index! + 1 : nil
es equivalente a
index.map { $0 + 1 }
Puede llamar a la propiedad successor
utilizando el encadenamiento opcional :
return index?.successor()
Para un valor arbitrario, advancedBy
funciona:
return index?.advancedBy(15)
Si se encontró haciendo esto muchas veces en su código, ¿podría definir su propio operador +
que agregue un Int
a un Int?
:
func +(i: Int?, j: Int) -> Int? {
return i == nil ? i : i! + j
}
Entonces podrías hacer lo siguiente:
return index + 1
Opcionalmente puede llamar a cualquier método en una opción anteponiendo la llamada con un signo de interrogación, y esto también funciona para operadores de postfix:
return index?++
De manera más general, también puedes escribir:
index? += 1; return index