Tuesday, 16 September 2014

Scala Notes 27: Traits as Stackable Modifications


Traits let you modify the methods of a class, and they do so in a way that allows you to stack those modifications with each other.


abstract class IntQueue {
   def get(): Int
   def put(x: Int)
}

trait Doubling extends IntQueue {
   abstract override def put(x: Int){super.put(2*x)}   
}


1. The trait can only be mixed into a class that also extends IntQueue.
2. Since super calls in a trait are dynamically bound, the super call in trait
Doubling will work so long as the trait is mixed in after another trait or class that gives a concrete definition to the method.

Usage:

scala> class MyQueue extends BasicIntQueue with Doubling

No comments:

Post a Comment