Scala 将时间戳转换为时间间隔

Scala 将时间戳转换为时间间隔,scala,functional-programming,Scala,Functional Programming,我编写了一个scala函数,将时间戳列表转换为时间间隔 def toIntervals(timestamps: List[String]) = { def helper(timestamps: List[String], accu: List[Long]): List[Long] = { if (timestamps.tail.isEmpty) accu.reverse else { val first = timestamps.head.to

我编写了一个scala函数,将时间戳列表转换为时间间隔

  def toIntervals(timestamps: List[String]) = {
    def helper(timestamps: List[String], accu: List[Long]): List[Long] = {
      if (timestamps.tail.isEmpty) accu.reverse
      else {
        val first = timestamps.head.toLong
        val second = timestamps.tail.head.toLong
        val newHead = second - first
        helper(timestamps.tail, newHead :: accu)
      }
    }
    helper(timestamps, List())
  }
而且没有追尾

  def toIntervals(timestamps: List[String]) : List[Long]  = {
      if (timestamps.tail.isEmpty) List()
      else {
        val first = timestamps.head.toLong
        val second = timestamps.tail.head.toLong
        val newHead = second - first
        newHead :: toIntervals(timestamps.tail)
      }
    }
但我有一种感觉,它有一个1/2的线性,例如map2。有什么建议吗

(timestamps.tail, timestamps).zipped.map(_.toLong - _.toLong)

是你的一行;只使用一次
val times=timestamps.map(u.toLong)
会更有效(这将使它成为一个两行)。

公认的答案很好,只是想提供一个替代方案:

timetamps.slideing(2).map{case Seq(a,b)=>b-a}