这个问题可能会被重复,但是,我还没有遇到任何问题可以解决我的问题。如何获得scala中选项列表的当前和下一个元素
所以我有一个List[ List[ Option[ Double ] ] ]
数据如下:
var tests = List(
List(Some(313.062468), Some(27.847252)),
List(Some(301.873641), Some(42.884065)),
List(Some(332.373186), Some(53.509768))
)
我想计算这个公式:以下
def findDifference(oldPrice: Option[Double], newPrice: Option[Double]): Option[Double] = {
return Some((newPrice.get - oldPrice.get)/oldPrice.get)
}
:
这是对两个列表的元素进行计算:
(Some(301.062468) - Some(313.062468))/Some(313.062468)
(Some(332.373186) - Some(301.873641))/Some(301.873641)
(Some(42.884065) - Some(27.847252))/Some(27.847252)
(Some(53.509768) - Some(42.884065))/Some(42.884065)
结果应该返回: #
List(
List(Some(-0.03573991820699504), Some(0.5399747522663995))
List(Some(0.10103414428290529), Some(0.24777742035415723))
)
到目前为止我的代码
def findDifference(oldPrice: Option[Double], newPrice: Option[Double]): Option[Double] = {
return Some((newPrice.get - oldPrice.get)/oldPrice.get)
}
def get_deltas(data: List[List[Option[Double]]]): List[List[Option[Double]]] = {
for {
i <- data
// So this is where I am stuck. I have the current element i, but I need the same index element in the next list
} (findDifference(i,?) }
我如果输出打印我的我在-理解
List(Some(313.062468), Some(27.847252))
List(Some(301.873641), Some(42.884065))
List(Some(332.373186), Some(53.509768))
我在哪里停留?
我被困在事实上,我不知道如何从列表2和列表3中获得列表1中的相同索引的元素,并进行必要的计算?
请帮我实现我的结果输出
当您在'findDifference'方法中使用'.get'打开每个可能的值时,用'Some'包装你的值有什么意义? –
1 - 如果元素的索引很重要,则不能以这种方式使用'for'理解。 2 - 如果其中任何选项为“无”,您的代码将抛出运行时异常。 (这是选项的用途。)3 - 我认为你的数据表示太复杂了。 – jwvh
我添加了一些解释我的问题。它不需要在里面。我只是不知道该怎么做计算。有没有办法呢? @jwvh –