Swift:扩展可选数组

我想扩展Optional,其中Wrapped是一个数组(包含任何类型的元素).换句话说,我想为[Any]添加一个函数?我只是不确定如何宣布.我试过了:

1.

extension Optional where Wrapped: Array

结果是:

error: reference to generic type 'Array' requires arguments in <...>

2.

extension Optional where Wrapped: Array<Any>

结果是:

type 'Wrapped' constrained to non-protocol type 'Array<Any>'

和其他各种类似的声明.感谢帮助.

最佳答案 是的,这里的问题是,在这一行,

extension Optional where Wrapped: Array<Any>

‘Array’应该是一种协议,更通用的方式:

extension Type where Element: Protocol 

我得到的解决方案是丑陋的,但有效,请考虑这个:

protocol ArrayOfAny {}
struct ArrayAny<Element: Any>: ArrayOfAny {
    let array: [Element]
    init(_ array: [Element]) {
        self.array = array
    }
}    

因为这:

extension Array: ArrayOfAny where Element: Any {}

不支持……

然后你可以这样做:

extension Optional where Wrapped: ArrayOfAny

希望能帮助到你 :)

点赞