fork download
  1. trait Hierarchical[T <: Hierarchical[T]] {
  2. val parents: List[Hierarchical[_]] = Nil
  3. var children: List[Hierarchical[T]] = List()
  4. }
  5.  
  6. class NonRootNode(override val parents: List[Hierarchical[_]])
  7. extends Hierarchical[NonRootNode] {}
  8.  
  9. class Root extends Hierarchical[NonRootNode] {
  10. final override val parents = Nil
  11. }
  12.  
  13. object Main extends App {
  14. val root = new Root
  15. assert(root.parents.isEmpty)
  16. val child = new NonRootNode(List(root))
  17. assert(child.parents.size == 1)
  18. assert(child.parents.contains(root))
  19. println("Success...")
  20. }
Success #stdin #stdout 0.15s 322432KB
stdin
Standard input is empty
stdout
Success...