Быстрое и быстрое перечисление опций
Есть ли лучший способ сделать это? Что-то, что выглядит лучше с точки зрения синтаксиса?
let a : [Any] = [5,"a",6]
for item in a {
if let assumedItem = item as? Int {
print(assumedItem)
}
}
Как то так, но потом с правильным синтаксисом?
for let item in a as? Int { print(item) }
4 ответа
Решение
Если вы используете Swift 2:
let array: [Any] = [5,"a",6]
for case let item as Int in array {
print(item)
}
В зависимости от ваших потребностей вы можете выбрать один из следующих фрагментов кода Playground.
# 1. С помощью Array
flatMap(_:)
let a: [Any] = [5, "a", 6]
for item in a.flatMap({ $0 as? Int }) {
print(item)
}
/*
prints:
5
6
*/
#2. С помощью Array
filter(_:)
let a: [Any] = [5, "a", 6]
for item in a.filter({ $0 is Int }) {
print(item)
}
/*
prints:
5
6
*/
#3. Использование условия where в цикле for
let a: [Any] = [5, "a", 6]
for item in a where item is Int {
print(item)
}
/*
prints:
5
6
*/
#4. Цепной Array
flatMap(_:)
(или же Array
filter(_:)
) с Array
forEach(_:)
let a: [Any] = [5, "a", 6]
a.flatMap({ $0 as? Int }).forEach({ print($0) })
/*
prints:
5
6
*/
Два решения
let a = [5,"a",6]
a.filter {$0 is Int}.map {print($0)}
или же
for item in a where item is Int {
print(item)
}
на самом деле нет никаких опций вообще в массиве
Вы также можете использовать flatMap
преобразовать массив в [Int]
,
let a : [Any] = [5,"a",6]
for item in a.flatMap({ $0 as? Int }) {
print(item)
}