【发布时间】:2019-05-23 11:51:56
【问题描述】:
我有几个类是这样的:
A类{} A1 类:A {} A2 类:A {} A3 类:A {} A4 类:A {} 类主{ 变量 a1 : A1 变量 a2 : A2 变量 a3s:[A3] var a4s:[A4] 函数 getAll() -> [A] { 返回 ([a1, a2] + a3s + a4s) } }如果你看一下函数 getAll(),你会看到我尝试返回一个类型为基类 A 的所有对象的数组。但是,我总是得到错误:
“二元运算符'+(::)'不能应用于'[Any]'和'[a3s]'类型的操作数”
你知道在这种情况下正确的方法是什么吗?
【问题讨论】:
-
那么,预期的输出是:一个包含四个数组中所有元素的数组,对吗?
-
不是真正重复的问题。区别在于类型数组是基类的子类。
-
这是另一个(只是为了好玩)
return [[a1, a2], a3s, a4s].flatMap{ $0 as? [A] }.reduce([], +)或更具冒险精神的return [[a1, a2], a3s, a4s].flatMap{ $0 as! [A] } -
@Alladinian 不需要减少。强迫沮丧也是邪恶的。我设置了 SwiftLint 以将其标记为编译错误。