
Professional Scala
By :

If you have come from Java, most of these things may not be surprising. As such, let's look at some other features of Scala's type system.
Abstract type members are type members of an object or class that are left abstract. They can provide some abstraction without the verbosity of type parameters. If a type is intended to be used existentially in most cases, we can cut some verbosity by using a type member instead of a parameter.
class Operator { type ToolOfChoice } class Susan extends Operator { type ToolOfChoice = Hammer } class Operator[ToolOfChoice] class Susan extends Operator[ToolOfChoice]
You can refer to an abstract type variable using the hash operator:
scala> val tool: Susan#ToolOfChoice = new Hammer tool: Hammer = Hammer@d8756ac
Scala supports structural types: type requirements that are expressed by an interface structure instead of a concrete type. Structural typing provides a feature similar to what dynamic languages...
Change the font size
Change margin width
Change background colour