fork download
  1. trait Greeter {
  2. def apply(name: String): String
  3. }
  4.  
  5. object HelloGreeter extends Greeter {
  6. def apply(name: String) = s"Hello, $name!"
  7. }
  8.  
  9. class Printer {
  10. this: { def greeter: Greeter } =>
  11.  
  12. def apply(name: String) =
  13. println(greeter(name))
  14. }
  15.  
  16. object Main extends App {
  17. trait GreeterDependency { def greeter = HelloGreeter }
  18. val printer = new Printer with GreeterDependency
  19. printer("rightfold")
  20. }
  21.  
Success #stdin #stdout 0.37s 382080KB
stdin
Standard input is empty
stdout
Hello, rightfold!