Tag: 复杂性

闪电阅读#1:Swift中的懒惰收藏

我打算暂时就Swift的日常实验写一些关于我的发现的“简短”文章……🕵 这是第一篇闪电文章! 🚀 问题:地图,flatMap和过滤器功能随附的中间杂波 假设我们在一个假想项目中具有以下要求: 可以下载6帧格式为animation_.jpeg 。 –使用Request对象下载动画帧。 –丢弃第二帧以获得更好的性能。 在现实世界中,我们很可能会有更多的帧,但可以将其视为简化示例。 我们将不使用这6帧的for循环,而是使用map , flatMap和filter方法。 让frameIndexes:[Int] = Array(1 … 6) 让imageRequests:[请求] = frameIndexes //通过每隔一帧过滤进行优化: .filter {$ 0%2 == 1} //将帧号转换为图像名称: .map {“ animation _ \($ 0).jpeg”} //将图片名称转换为网址: .flatMap {URL(string:“ https://www.somehost.com/\($0)”)} //转换网址以请求对象: .map {Request(url:$ 0)} 这比具有for循环更具可读性。 但是性能如何? 让我们逐行遍历此代码块来详细研究。 filter块对数组中的每个帧索引运行6次。 使用3个过滤的帧索引创建一个新数组。 每个图块运行3次。 将使用3个图像名称创建一个新数组。 flatMap块对每个项目运行3次。 将使用3个URL创建一个新数组。 (假设将在每个图像名称上成功创建URL。) map块在每个URL上运行3次。 使用3个请求对象创建一个新数组。 呼叫顺序将如下所示: […]