Что такое представления для наборов и когда Вы хотели бы использовать их?

В Scala, для многих (все?) типы наборов можно создать представления.

Что такое точно представление и для которых целей представления полезны?

53
задан om-nom-nom 17 April 2013 в 05:29
поделиться

1 ответ

Представления - это нестрогие версии коллекций. Это означает, что элементы вычисляются при доступе, а не так быстро, как в обычных коллекциях.

В качестве примера возьмем следующий код:

val xs = List.tabulate(5)(_ + 1)
val ys = xs.view map { x => println(x); x * x }

Просто это ничего не напечатает, но каждый доступ к списку будет выполнять вычисление и печатать значение, т.е. каждый вызов ys.head приведет к в 1 печатается. Если вы хотите снова получить строгую версию коллекции, вы можете вызвать для нее force . В этом случае вы увидите распечатанные номера.

Одно из применений представлений - это когда вам нужно пройти по коллекции значений, вычисление которых требует больших затрат, и вам нужно только одно значение за раз. Также представления позволяют создавать ленивые последовательности, вызывая для них toStream , которые также будут кэшировать оцененные элементы.

47
ответ дан 7 November 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: