scala - 如何与 Seq[Double] 中的先前值进行比较

标签 scala

我是函数式编程的新手,我有一个 Seq[Double],我想检查每个值是否高于 (1)、低于 (-1) 或等于 (0) 之前的值,例如:

val g = Seq(0.1, 0.3, 0.5, 0.5, 0.5, 0.3)

我希望得到如下结果:

val result = Seq(1, 1, 0, 0, 0, -1)

有没有比以下更简洁的方法:

val g = Seq(0.1, 0.3, 0.5, 0.5, 0.5, 0.3)
g.sliding(2).toList.map(xs =>
 if (xs(0)==xs(1)){
    0
 } else if(xs(0)>xs(1)){
  -1
 } else {
    1
 }
) 

最佳答案

使用比较:

g.sliding(2).map{ case Seq(x, y) => y compare x }.toList

compare 由名为 OrderedProxy 的丰富特征添加

关于scala - 如何与 Seq[Double] 中的先前值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089476/

相关文章:

scala - 方法依赖性和错误处理

scala - 如何将文件名保存到数据库中

scala - 使用 Scala 发送击键和鼠标点击

scala - for..else用于Scala中的Option类型?

java - scala InputStreamReader 不读取整个数据(文件)

scala - 如何使用 akka-http 将 html 文件作为正确的内容正确地提供给浏览器?

scala - Json4s:不支持在方法体中定义的类

android - 在 Scala 中重写 Java 构造函数

scala - 如何从scala中的子类调用父类(super class)构造函数以及如何进行构造函数链接

scala - scala中是否有快速并发语法糖的实现?例如。 map 减少