Создать список со значениями, сгенерированными функцией в Scala - PullRequest
7 голосов
/ 23 августа 2011

Я должен сгенерировать несколько случайных чисел и суммировать их. Что-то вроде

result = generateList(range(0, max), generatorFunctionReturningInt()).foreach(sum _)

Если generateList генерирует List с размером = max и значениями, генерируемыми generatorFunctionReturningInt

Или может быть что-то вроде

result = range(0, max).map(generatorFunctionReturningInt).foreach(sum _)

Ответы [ 4 ]

15 голосов
/ 23 августа 2011

Как насчет этого?

Stream.continually(generatorFunctionReturningInt()).take(max).sum
11 голосов
/ 23 августа 2011

Сопутствующие объекты для различных типов коллекций имеют несколько удобных фабричных методов.Попробуйте:

Seq.fill(max)(generate)
4 голосов
/ 23 августа 2011

Просто

(0 to max).map(_ => (new util.Random).nextInt(max)).sum

, где max определяет как число чисел, так и случайный диапазон.

foreach метод, предназначенный для использования с функциями побочных эффектов (такими как println), которыеничего не возвращает (Unit).

0 голосов
/ 23 августа 2011

foreach не для возврата результатов, используйте вместо этого карту:

val result = Range (0, max).map (generatorFunctionReturningInt).map (sum _)

конкретно, сумма уже предопределена, не так ли?

val result = Range (0, max).map (generatorFunctionReturningInt).sum

рабочий код (нам всем нравитсярабочий код)

val result = Range (0, 15).map (3 + _).sum
result: Int = 150

Для этого тривиального случая он такой же, как Range (3, 18).sum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...