gpt4 book ai didi

arrays - 如何将扩展添加到 Swift 数组以有条件地追加?

转载 作者:行者123 更新时间:2023-11-28 06:25:10 25 4
gpt4 key购买 nike

有没有一种方法可以将此作为 Array 的扩展而不是不断增长的 switch 语句?

    fileprivate var exteriorColorOptions = [ExteriorColorOption]()
fileprivate var otherOptions = [SomeOtherOption]()
: more options

func add(option:FilteredOption) {

switch(option) {
case let thing as ExteriorColorOption:
exteriorColorOptions.append(thing)
case and on and on
default:
break
}
}

我希望能够使用正确的扩展程序执行以下操作:

exteriorColorOptions.appendIfPossible(option)
otherOptions.appendIfPossible(option)

注:switch方法来自 Swift: Test class type in switch statement

最佳答案

这应该有效:

extension Array {

mutating func appendIfPossible<T>(newElement: T) {
if let e = newElement as? Element {
append(e)
}
}
}

条件转换 newElement as?元素成功如果新元素符合或者是数组元素类型 Element(的子类)的实例。

例子:

class A {}
class B: A {}
class C {}

var array: [A] = []

array.appendIfPossible(newElement: B())
print(array) // [B]

array.appendIfPossible(newElement: C())
print(array) // [B]

关于arrays - 如何将扩展添加到 Swift 数组以有条件地追加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com