我想更好地理解Swift或任何其他语言中的递归循环和扁平化。
我有一个简单的Swift类
class Survey {
let items: [SurveyItem]?
}
class SurveyItem {
let id: String?
let items: [SurveyItem]?
}
调查具有items
,并且每个item
可以有自己的更多类型。
我想编写一个函数,将调查中的所有项和子项组装到一个平面数组中
发布于 2019-05-24 03:16:51
protocol SurveyItemVending {
var items: [SurveyItem]? { get }
}
extension Survey: SurveyItemVending { }
extension SurveyItem: SurveyItemVending { }
extension SurveyItemVending {
var allItemsRecursively: [SurveyItem] {
let items = self.items ?? []
return items + items.flatMap { $0.allItemsRecursively }
}
}
现在,您可以向任何Survey
或SurveyItem
索要其allItemsRecursively
。
https://stackoverflow.com/questions/56281495
复制相似问题