Этот вопрос может быть дублирован, однако я не сталкивался с вопросом, который отвечает на мою проблему.Как получить текущий и следующий элемент списка списка опций в 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))
Где я застрял?
Я застрял в том, что не знаю, как получить элемент одного индекса в списке 1 из списка 2 и списка 3 и выполнить необходимый расчет?
Пожалуйста, помогите мне достичь мой вывод результата
В чем смысл обертывания ваших значений с помощью 'Some', когда вы разворачиваете все возможные значения с помощью' .get' в вашем методе 'findDifference'? –
1 - Таким образом, вы не можете использовать '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. 2 - Ваш код будет генерировать исключение во время выполнения, если любой из этих параметров «Нет». (Для чего нужны варианты.) 3 - Я думаю, что ваше представление данных слишком сложно. – jwvh
Ive добавил некоторые, чтобы объяснить мою проблему. Его не требуется внутри. Я просто не знаю, как сделать расчет. Есть ли способ сделать это? @jwvh –