Я новичок в функциональном программировании, у меня есть Seq [Double], и я бы хотел проверить каждое значение, если оно выше (1), ниже (-1) или равно (0) к предыдущему значению, как:Как сравнить с предыдущими значениями в Seq [Double]
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.tail, g) .zipped.map (_ compare _)'. –
определенно убийственное предложение, выглядит немного трудно читать для меня жестким ... большое спасибо – user299791
Я согласен, что это немного сложнее читать. Замещать что-то против своего хвоста, чтобы получить последовательные пары элементов, является довольно распространенным функциональным идиомом, хотя, поэтому стоит знать. –