ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.01.2026
Просмотров: 3483
Скачиваний: 0
Chapter 19
Type Parameterization
In this chapter, we’ll explain the details of type parameterization in Scala. Along the way we’ll demonstrate some of the techniques for information hiding introduced in Chapter 13 by means of a concrete example: the design of a class for purely functional queues. We’re presenting type parameterization and information hiding together, because information hiding can be used to obtain more general type parameterization variance annotations.
Type parameterization allows you to write generic classes and traits. For example, sets are generic and take a type parameter: they are defined as Set[T]. As a result, any particular set instance might be a Set[String], a Set[Int], etc.—but it must be a set of something. Unlike Java, which allows raw types, Scala requires that you specify type parameters. Variance defines inheritance relationships of parameterized types, such as whether a Set[String], for example, is a subtype of Set[AnyRef].
The chapter contains three parts. The first part develops a data structure for purely functional queues. The second part develops techniques to hide internal representation details of this structure. The final part explains variance of type parameters and how it interacts with information hiding.
19.1 Functional queues
A functional queue is a data structure with three operations:
head returns the first element of the queue tail returns a queue without its first element enqueue returns a new queue with a given element
appended at the end
Cover · Overview · Contents · Discuss · Suggest · Glossary · Index