use*_*611 1 arrays recursion swift
我想更好地理解 Swift 或任何其他语言中的递归循环和扁平化。
我有一个简单的 Swift 类
class Survey {
let items: [SurveyItem]?
}
class SurveyItem {
let id: String?
let items: [SurveyItem]?
}
Run Code Online (Sandbox Code Playgroud)
调查有items
并且每个调查item
可以有更多自己的类型。
我想编写一个函数,将调查中的所有项目和子项目组装成一个平面数组
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 }
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以询问任何Survey
或SurveyItem
其allItemsRecursively
。
归档时间: |
|
查看次数: |
941 次 |
最近记录: |