Seq - reverseMap 与 Scala 中的 reverse.map

Seq - reverseMap vs reverse.map in Scala

为什么在 Scala 中的 Seq 上有一个方法 reverseMap,当它看起来与 reverse.map 一样时?

一个可能比另一个快吗?

对于可以有效地向后迭代的集合(例如双向链表或可索引集合),reverseMap 可能更节省内存和时间,因为 reverse 是类型保留的. IE。如果在数组上调用它,它将创建一个反转数组的副本,然后 map 该数组。 (如果 reverse 创建了反向迭代器而不是数组,情况就会有所不同。)

这需要额外的 O(n) space 并迭代数组两次。而 reverseMap 只迭代一次,不需要额外的 space.

不幸的是,通常不可能将此类优化留给编译器。特别是,弄清楚 reverse.mapreverseMap 相同是 函数问题 的一个实例,这是不可判定的。