【发布时间】:2016-11-04 16:26:07
【问题描述】:
我想扩展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>'
和其他各种类似的声明。感谢您的帮助。
【问题讨论】:
-
这个扩展究竟是什么?换句话说,您希望只添加到
[Any]?的功能是什么? -
我想添加一个便利函数,1) 如果数组为非 nil,则追加一个元素;2) 如果数组为 nil,则仅使用元素初始化数组。
-
@ConnorNeville 你的意思是
array = (array ?? []) + [element]? IMO 真的不值得扩展(考虑到您必须经历的变通方法才能使其工作)。 -
多哈。这比我反复写的要简洁得多。我会这样做的,谢谢。
-
@ConnorNeville 没问题 :) 虽然我觉得有必要质疑可选数组的使用,但它不可能只是一个非可选的空数组吗?