what switch style statement removed programming loop language has for example been array according swift2 optional for-in-loop

swift2 - style - uiswitch swift



Swift: ¿Cómo usar for-in loop con un opcional? (5)

No creo que haya una manera adecuada. Hay muchas maneras diferentes, realmente se reduce a lo que prefiera, Swift está lleno de características que pueden hacer que su programa se vea realmente bien de acuerdo con su elección.

Aquí hay algunas maneras en que podría pensar:

let optionalInt:[Int]? = [1, 2, 3] for i in optionalInt! { print(i) } for i in optionalInt ?? [] { print(i) } for i in optionalInt as [Int]! { print(i) }

¿Cuál es la forma correcta de usar for-in loop con un opcional?

Ahora mismo realizo siempre un enlace opcional antes de ponerlo en bucle. ¿Hay otros modismos?

let optionalInt:[Int]? = [1, 2, 3] if let optionalInt = optionalInt { for i in optionalInt { print(i) } }


Puedes escribir este:

let optionalInt:[Int]? = [1, 2, 3] for i in optionalInt ?? [Int]() { print(i) }

Pero le recomendaría que evite usar valores opcionales, por ejemplo, puede escribir así:

var values = [Int]() // now you may set or may not set for i in values { print(i) }

O si desea utilizar un valor opcional y este código llama a una función puede usar guard :

guard let values = optionalInt else { return } for i in values { print(i) }



Si el conjunto de operaciones se aplicará a todos los elementos de la matriz, es posible reemplazar for-loop con forEach{} closure y usar el encadenamiento opcional :

var arr: [Int]? = [1, 2, 3] arr?.forEach{print($0)}


Tengo dos años de retraso, pero creo que esta es la mejor manera.

func maybe<T>(risk: T?, backup: T) -> T { return risk.maybe(backup) }

y

extension Optional { func maybe(_ backup: Wrapped) -> Wrapped { switch self { case let .some(val): return val case .none: return backup } } }

y ahora

for i in optionalInt.maybe([]) { print(i) }