【发布时间】:2015-07-02 09:49:20
【问题描述】:
我想从数组中删除自定义类型值的元素。
我想将一个变体实例传递给函数以将其从数组中删除,我不想使用 removeAtIndex()。
var favoriteVariants: [Variant]
func removeVariant(variant: Variant)
{
}
【问题讨论】:
我想从数组中删除自定义类型值的元素。
我想将一个变体实例传递给函数以将其从数组中删除,我不想使用 removeAtIndex()。
var favoriteVariants: [Variant]
func removeVariant(variant: Variant)
{
}
【问题讨论】:
如果 Variant 是 Equatable 并且您只想删除第一个匹配的:
if let idx = favoriteVariants.indexOf(variant) {
favoriteVariants.removeAtIndex(idx)
}
如果不是 Equatable 并且您有一些其他匹配条件要找到一个要删除的条件:
let idx = favoriteVariants.indexOf {
// match $0 to variant
}
if let idx = idx {
favoriteVariants.removeAtIndex(idx)
}
(这些假设是 Swift 2.0 - 如果是 1.2,它是 find(favoriteVariants, variant) 而不是 indexOf,并且没有一个需要闭包的版本,尽管 write one 并不难)
如果您想一次性删除多个:
favoriteVariants = favoriteVariants.filter {
// criteria to _keep_ any given favorite
}
如果您想要做的事情足够笼统以证明它的合理性,所有这些都可以包含在扩展中。
【讨论】: