我正在将Map应用到包含try
的字典中。如果Map项无效,我希望跳过迭代。
例如:
func doSomething<T: MyType>() -> [T]
dictionaries.map({
try? anotherFunc($0) // Want to keep non-optionals in array, how to skip?
})
}
在上面的示例中,如果anotherFunc
返回nil
,如何跳出当前迭代并移到下一个迭代?这样,它就不会包含nil
的项。这可能吗?
1条答案
按热度按时间dbf7pr2w1#
只需将
map()
替换为flatMap()
即可:如果调用抛出错误,
try? ...
将返回nil
,因此这些元素将在结果中被忽略。以下是一个用于演示的自包含示例:
对于Swift 3,将
ErrorType
替换为Error
。对于Swift 4,请使用
compactMap