Попробуйте это:
println( (0 /: fruit)(_ + _.length) )
Переданная функция получает в качестве аргумента сначала аккумулятор (Int
, исходя из исходного значения 0
), а затем следующий элемент коллекции (aString
, выведено из типа fruit
).
Порядок аргументов легко запомнить, поскольку они соответствуют порядку, в котором появляются начальное значение и коллекция.Здесь начальное значение появляется первым, и, соответственно, аккумулятор передается в качестве первого аргумента - и в качестве второго аргумента вы получаете элемент коллекции fruit
, который появляется после имени метода /:
.
Если вместо этого вы сделали foldRight
, то порядок будет удобно поменять местами:
println( (fruit :\ 0)(_.length + _) )