swift - 为什么 reversed() 的结果确实表现得像一个数组?
问题描述
extension Array where Element == Int {
func prefixSum() -> [Int] {
var sum = 0
return map { element in
defer { sum += element }
return sum
}
}
func suffixSum() -> [Int] {
reversed().prefixSum().reversed()
}
}
上面的代码完美运行。
问题是它为什么有效?
该函数reversed()
返回的不是数组。它返回ReversedCollection<Array>
。所以结果不应该reversed()
定义函数。并且返回类型也应该不匹配:函数期望返回一个数组。我认为应该这样写(当然也可以):prefixSum()
suffixSum()
suffixSum()
func suffixSum() -> [Int] {
Array(Array(reversed()).prefixSum().reversed())
}
解决方案
推荐阅读
- mongodb - 如何使用查找或聚合查询对象是否在mongodb中有嵌套的对象数组
- next.js - nextjs“无法编译页面/_app.js”如何解决
- android - ListView 中的有状态小部件在收听广播流时不会更新
- apache-nifi - Nifi进程组调度使用control m
- javascript - 构建简单的网络应用程序时,Firebase UI 无法显示在按钮中
- discord - Discord.js 将使用命令的内容发送给管理员
- javascript - 类型错误:_fire__WEBPACK_IMPORTED_MODULE_1__.default.auth 不是函数
- bison - 为什么 Bison 总是输出大于号?如何省略它?
- python - Issue with reproducibility across different sessions
- azure - Registration only site with custom policy