斯威夫特的懒惰
发布时间:2020-12-14 05:26:51 所属栏目:百科 来源:网络整理
导读:为什么懒惰在这里使用? extension SequenceType { func mapSomeU(transform: Generator.Element - U?) - [U] { var result: [U] = [] for case let x? in lazy(self).map(transform) { result.append(x) } return result }} 此扩展使用返回可选的转换函数,
为什么懒惰在这里使用?
extension SequenceType { func mapSome<U>(transform: Generator.Element -> U?) -> [U] { var result: [U] = [] for case let x? in lazy(self).map(transform) { result.append(x) } return result } } 此扩展使用返回可选的转换函数,并返回仅包含未转换为nil的值的数组 为什么不使用self.map(转换)?这里有懒惰吗?
它避免了创建中间数组.
self.map(transform) 返回一个包含转换结果的数组 lazy(self).map(transform) 是一系列变换后的元素,然后是 两种方法都有效.懒惰的方法可能会表现得更好对于大型序列,但这可能取决于许多因素(大小对于数组,无论元素是值还是引用类型,复制数组元素的成本是多少等).适用于小型阵列懒惰的方法可能会因为额外的而变慢高架.在具体的应用程序中,使用Instruments进行分析帮助决定使用哪种方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |