Создайте список с лямбдами в kotlin - PullRequest
0 голосов
/ 21 ноября 2018

Я новичок в Kotlin и lambdas, и я пытаюсь понять это.Я пытаюсь создать список из 100 случайных чисел.Это работает:

private val maxRandomValues = (1..100).toList()

Но я хочу сделать что-то подобное:

private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()

Но это не работает.Я пытаюсь выяснить, как использовать значения, сгенерированные в forEach, которые используются в toList()

1 Ответ

0 голосов
/ 21 ноября 2018

Для этого лучше использовать функцию kotlin.collections:

List(100) {
    Random.nextInt()
}

В соответствии с Collections.kt

inline fun <T> List(size: Int, init: (index: Int) -> T): List<T> = MutableList(size, init)

Можно также сгенерировать диапазон, как в вашем случае:

(1..100).map { Random.nextInt() }

Причина, по которой вы не можете использовать forEach, заключается в том, что он возвращает Unit (что-то вроде void в Java, C # и т. Д.).map оперирует Iterable (в данном случае range чисел от 1 до 100), чтобы отображать их на другое значение.Затем он возвращает список со всеми этими значениями.В этом случае имеет смысл использовать описанный выше конструктор List, поскольку вы на самом деле не «отображаете» значения, а создаете список

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