У меня есть список кортежей, называемый item
, каждый индекс в списке содержит 2 x Double
s, например.Scala foldLeft too many parameters
item = ((1.0, 2.0), (3.0, 4.0), (10.0, 100.0))
Я хочу, чтобы выполнить расчет по каждому индексу в списке item
, и я пытаюсь сделать это с foldLeft
. Это мой код:
item.foldLeft(0.0)(_ + myMethod(_._2, _._1, item.size)))
_._2
доступ к текущему item
кортежу индекса 1 и _._1
доступа к текущему item
кортежа индекса 0. например, для первого раза оно должно быть эффективно:
item.foldLeft(0.0)(_ + myMethod(2.0, 1.0, item.size)))
Второй Fold:
item.foldLeft(0.0)(_ + myMethod(4.0, 3.0, item.size)))
Третий Fold:
item.foldLeft(0.0)(_ + myMethod(100.0, 10.0, item.size)))
где MyMethod:
def myMethod(i: Double, j:Double, size: Integer) : Double = {
(j - i)/size
}
Это давая мне ошибку, в которой говорится, что re - слишком много параметров для foldLeft
, так как для этого требуется 2 параметра. myMethod
возвращает Double
, а _
- Double
. Итак, где этот дополнительный параметр, который видит компилятор?
Если я это сделать:
item.foldLeft(0.0)(_ + _._1))
Он суммирует все первые Double
с в каждом индексе item
- замена _._ 1 с _._ 2 резюмирует все вторые Double
с в каждом индексе item
,
Любая помощь очень ценится!
** спасибо **! Я должен был спросить 4 часа назад. Исходя из фона Java, я с трудом хватаю '_'. Еще раз спасибо! – monster
Я рад, что это помогло :) – Dimitri